๐ซcode )
from sys import stdin
input = stdin.readline
n = int(input())
nums = [int(input()) for _ in range(n)]
cnt, s, res = 1, [], [] # res ๊ฒฐ๊ณผ๊ฐ ๋ฆฌ์คํธ
for i in nums:
while i >= cnt:
s.append(cnt)
res.append('+')
cnt += 1
if s.pop() != i:
print('NO')
break
else:
res.append('-')
else:
print('\n'.join(res))
๐ description )
๋ฌธ์ ์ถ์ฒ : www.acmicpc.net/problem/1874
๋ฌธ์ ์คํ (stack)์ ๊ธฐ๋ณธ์ ์ธ ์๋ฃ๊ตฌ์กฐ ์ค ํ๋๋ก, ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ์์ฑํ ๋ ์์ฃผ ์ด์ฉ๋๋ ๊ฐ๋ ์ด๋ค. ์คํ์ ์๋ฃ๋ฅผ ๋ฃ๋ (push) ์ ๊ตฌ์ ์๋ฃ๋ฅผ ๋ฝ๋ (pop) ์ ๊ตฌ๊ฐ ๊ฐ์ ์ ์ผ ๋์ค์ ๋ค์ด๊ฐ ์๋ฃ๊ฐ ์ ์ผ ๋จผ์ ๋์ค๋ (LIFO, Last in First out) ํน์ฑ์ ๊ฐ์ง๊ณ ์๋ค. 1๋ถํฐ n๊น์ง์ ์๋ฅผ ์คํ์ ๋ฃ์๋ค๊ฐ ๋ฝ์ ๋์ด๋์์ผ๋ก์จ, ํ๋์ ์์ด์ ๋ง๋ค ์ ์๋ค. ์ด๋, ์คํ์ pushํ๋ ์์๋ ๋ฐ๋์ ์ค๋ฆ์ฐจ์์ ์งํค๋๋ก ํ๋ค๊ณ ํ์. ์์์ ์์ด์ด ์ฃผ์ด์ก์ ๋ ์คํ์ ์ด์ฉํด ๊ทธ ์์ด์ ๋ง๋ค ์ ์๋์ง ์๋์ง, ์๋ค๋ฉด ์ด๋ค ์์๋ก push์ pop ์ฐ์ฐ์ ์ํํด์ผ ํ๋์ง๋ฅผ ์์๋ผ ์ ์๋ค. ์ด๋ฅผ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ. ์ ๋ ฅ์ฒซ ์ค์ n (1 ≤ n ≤ 100,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ n๊ฐ์ ์ค์๋ ์์ด์ ์ด๋ฃจ๋ 1์ด์ n์ดํ์ ์ ์๊ฐ ํ๋์ฉ ์์๋๋ก ์ฃผ์ด์ง๋ค. ๋ฌผ๋ก ๊ฐ์ ์ ์๊ฐ ๋ ๋ฒ ๋์ค๋ ์ผ์ ์๋ค. ์ถ๋ ฅ์ ๋ ฅ๋ ์์ด์ ๋ง๋ค๊ธฐ ์ํด ํ์ํ ์ฐ์ฐ์ ํ ์ค์ ํ ๊ฐ์ฉ ์ถ๋ ฅํ๋ค. push์ฐ์ฐ์ +๋ก, pop ์ฐ์ฐ์ -๋ก ํํํ๋๋ก ํ๋ค. ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ NO๋ฅผ ์ถ๋ ฅํ๋ค. |
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด 700๋ฌธ์ ๊ธฐ๋ ๐ (0) | 2022.02.19 |
---|---|
[๋ฐฑ์ค] ๋ณด๋ฌผ / 1026๋ฒ / ํ์ด์ฌ / Python (0) | 2020.10.27 |