๋ฌธ์
์คํ (stack)์ ๊ธฐ๋ณธ์ ์ธ ์๋ฃ๊ตฌ์กฐ ์ค ํ๋๋ก, ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ์์ฑํ ๋ ์์ฃผ ์ด์ฉ๋๋ ๊ฐ๋ ์ด๋ค. ์คํ์ ์๋ฃ๋ฅผ ๋ฃ๋ (push) ์ ๊ตฌ์ ์๋ฃ๋ฅผ ๋ฝ๋ (pop) ์ ๊ตฌ๊ฐ ๊ฐ์ ์ ์ผ ๋์ค์ ๋ค์ด๊ฐ ์๋ฃ๊ฐ ์ ์ผ ๋จผ์ ๋์ค๋ (LIFO, Last in First out) ํน์ฑ์ ๊ฐ์ง๊ณ ์๋ค.
1๋ถํฐ n๊น์ง์ ์๋ฅผ ์คํ์ ๋ฃ์๋ค๊ฐ ๋ฝ์ ๋์ด๋์์ผ๋ก์จ, ํ๋์ ์์ด์ ๋ง๋ค ์ ์๋ค. ์ด๋, ์คํ์ pushํ๋ ์์๋ ๋ฐ๋์ ์ค๋ฆ์ฐจ์์ ์งํค๋๋ก ํ๋ค๊ณ ํ์. ์์์ ์์ด์ด ์ฃผ์ด์ก์ ๋ ์คํ์ ์ด์ฉํด ๊ทธ ์์ด์ ๋ง๋ค ์ ์๋์ง ์๋์ง, ์๋ค๋ฉด ์ด๋ค ์์๋ก push์ pop ์ฐ์ฐ์ ์ํํด์ผ ํ๋์ง๋ฅผ ์์๋ผ ์ ์๋ค. ์ด๋ฅผ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ.
์ ๋ ฅ
์ฒซ ์ค์ n (1 ≤ n ≤ 100,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ n๊ฐ์ ์ค์๋ ์์ด์ ์ด๋ฃจ๋ 1์ด์ n์ดํ์ ์ ์๊ฐ ํ๋์ฉ ์์๋๋ก ์ฃผ์ด์ง๋ค. ๋ฌผ๋ก ๊ฐ์ ์ ์๊ฐ ๋ ๋ฒ ๋์ค๋ ์ผ์ ์๋ค.
์ถ๋ ฅ
์ ๋ ฅ๋ ์์ด์ ๋ง๋ค๊ธฐ ์ํด ํ์ํ ์ฐ์ฐ์ ํ ์ค์ ํ ๊ฐ์ฉ ์ถ๋ ฅํ๋ค. push์ฐ์ฐ์ +๋ก, pop ์ฐ์ฐ์ -๋ก ํํํ๋๋ก ํ๋ค. ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ NO๋ฅผ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํ์ด
์ฒ์์ ๋ฌธ์ ๋ฅผ ์ฝ๊ณ ๋์ ๋ฌด์จ ๋ป์ธ์ง ์ดํด๊ฐ ์ ๋์ง ์์๋ค.
์คํ์ ์ค๋ฆ์ฐจ์์ผ๋ก push๋์ด์ผ ํ๋ค๋ ๊ฒ์ ๋ง์ฝ 4๋ฅผ ๋ฝ์๋ด์ผ ํ ๊ฒฝ์ฐ ์์ง 1,2,3,4๋ฅผ ์ฐจ๋ก๋ก pushํด์ค ๋ค์ 4๊ฐ top์ ์์นํ ๋๋ง ๋ฝ์๋ด๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค๋ ๋ป์ด๋ค.
4 3 6 8 7 5 2 1 ์ ์๋ก ๋ค๋ฉด, 1,2,3,4๋ฅผ pushํ๊ณ , 4๋ฅผ ๋ฝ์๋ธ ๋ค์ ๋ 3์ ๋ฝ์๋ธ ํ์ 5,6์ pushํด์ฃผ๊ณ 6์ ๋ฝ์๋ธ ๋ค์ 7,8์ pushํด์ฃผ๊ณ ์์๋๋ก 8,7,5,2,1์ ๋ฝ์๋ด๋ฉด ๋๋ค.
import sys
n=int(sys.stdin.readline())
# ์ค๋ฆ์ฐจ์์ผ๋ก push๋๊ณ ์๋์ง ์ฒดํฌํ ๋ณ์
cnt=0
stack=[]
ans=[]
for i in range(1,n+1):
num=int(sys.stdin.readline())
while cnt<num:
cnt+=1
stack.append(cnt)
ans.append('+')
if num==stack[-1]:
stack.pop()
ans.append('-')
else:
print('NO')
sys.exit(0)
for a in ans:
print(a)
์ค๋ฆ์ฐจ์์ผ๋ก push๋๋์ง ํ์ธํ๊ธฐ ์ํด์ ์ต๊ทผ์ pushํ ๊ฐ์ ์ ์ฅํ๋ cnt ๋ณ์๋ฅผ ์ ์ธํ๋ค.
๋จผ์ ์ด๋ค ๊ฐ์ popํด์ผ ํ๋์ง ์ ๋ ฅ๋ฐ์ num์ ์ ์ฅํ๊ณ , cnt๊ฐ num๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ์ ์ด๋ฏธ num๋ณด๋ค ์์ ๊ฐ๋ค์ ๋ชจ๋ pushํด์คฌ๋ค๋ ๋ป์ด๋ฏ๋ก top๊ณผ num์ ๋น๊ตํด์ popํด์ค๋ค.
๋ฐ๋๋ก, cnt๊ฐ num๋ณด๋ค ์์ ๊ฒฝ์ฐ cnt+1ํด์ฃผ๊ณ ์คํ์ pushํด์ค๋ค.
pushํด์ค ๋๋ง๋ค ans ๋ฐฐ์ด์ '+'๋ฅผ ์ถ๊ฐํ๋ค. cnt๊ฐ num๊ณผ ๋์ผํด์ง๋ฉด while๋ฌธ์ ๋น ์ ธ๋์ stack์ top๊ณผ num์ด ๋์ผํ์ง ํ์ธํ๊ณ ๋์ผํ๋ค๋ฉด popํด์ฃผ๊ณ '-'๋ฅผ ans ๋ฐฐ์ด์ ์ถ๊ฐํ๋ค.
๋ง์ฝ ์ฌ๊ธฐ์ cnt๊ฐ num๊ณผ ๋์ผํด์ ธ์ ๋น ์ ธ๋์๋๋ฐ top๊ณผ num์ด ๋์ผํ์ง ์๋ค๋ฉด ํด๋น ์์ด์ ์ ๋ ฅ๋ ์์ด์ ๋ง๋ค์ด๋ผ ์ ์๋ ๊ฒฝ์ฐ์ด๋ฏ๋ก NO๋ฅผ ์ถ๋ ฅํ๊ณ ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํ๋ค.
์ด ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด ๋ง์ง๋ง์ผ๋ก ans ๊ฐ์ ์ถ๋ ฅํ๊ณ ์ข ๋ฃํ๋ค.
'์๊ณ ๋ฆฌ์ฆ > ์ ํ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 9935 ๐ฅ] ๋ฌธ์์ด ํญ๋ฐ (1) | 2023.08.12 |
---|---|
[๋ฐฑ์ค 2493 ๐ฅ] ํ (0) | 2023.08.03 |
[๋ฐฑ์ค 1863 ๐ฅ] ์ค์นด์ด๋ผ์ธ ์ฌ์ด ๊ฑฐ (0) | 2023.08.03 |
[๋ฐฑ์ค 2003 ๐ฅ] ์๋ค์ ํฉ2 (0) | 2023.07.31 |
[๋ฐฑ์ค 1935 ๐ฅ] ํ์ ํ๊ธฐ์2 (0) | 2023.07.10 |