๐Ÿงท ๋ฌธ์ œ

https://www.acmicpc.net/problem/1874

1๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ์ˆ˜๋ฅผ ์Šคํƒ์— ๋„ฃ๊ณ  ๋นผ๋Š” ๊ฒƒ์„ ๋ฐ˜๋ณตํ•˜๋Š”๋ฐ, ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ๋งŒ pushํ•  ์ˆ˜ ์žˆ๊ณ  ์ž„์˜์˜ ์ˆ˜์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ ์œ„์˜ ์Šคํƒ์„ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋ฅผ ์•Œ์•„๋ณด๋Š” ๋ฌธ์ œ์ด๋‹ค.

๐Ÿ›  ํ’€์ด

์ด ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ์ฒ˜์Œ์—๋Š” ๋ฌธ์ œ ์ž์ฒด๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์ด ์žˆ์—ˆ์ง€๋งŒ ์•„๋ž˜์— ์žˆ๋Š” ์˜ˆ์ œ๋ฅผ ์ง์ ‘ ์†์œผ๋กœ ๊ทธ๋ ค๊ฐ€๋ฉด์„œ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

Step 1.
 1๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ์ˆ˜๋ฅผ ๋„ฃ์–ด์ค„ sequence๋ฆฌ์ŠคํŠธ์™€ ๊ฒฐ๊ณผ๋กœ ๋ณด์—ฌ์ค„ res๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.
 ๊ทธ๋ฆฌ๊ณ  num๋ณ€์ˆ˜๋ฅผ 1๋กœ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๋ฌธ์ œ ์กฐ๊ฑด๊ณผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š” check๋ณ€์ˆ˜๋ฅผ True๋กœ ์„ค์ •ํ•œ ํ›„์— ์ž„์˜์˜ ์ˆ˜์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค๋ฉด NO๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค.

Step 2.
 n๊ฐœ์˜ ์ค„์„ ํ†ตํ•ด ์ž…๋ ฅ๋˜๋Š” ์ž„์˜์˜ ์ˆ˜์—ด์˜ ์›์†Œ๋“ค์„ tmp๋ผ๋Š” ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„์ฃผ์—ˆ๋‹ค.
 while๋ฌธ์„ ์ด์šฉํ•ด num์ด tmp๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์„ ๋•Œ sequence๋ฆฌ์ŠคํŠธ์— num๊ฐ’์„ pushํ–ˆ๋‹ค.
 ๋™์‹œ์— ๊ฒฐ๊ณผ๋กœ ๋ณด์—ฌ์ค„ res๋ฆฌ์ŠคํŠธ์—๋Š” +๋ฅผ appendํ•ด์คฌ๋‹ค.
 ๊ทธ ํ›„์—๋Š” num๊ฐ’์„ ํ•˜๋‚˜ ์˜ฌ๋ ค์ฃผ๊ณ  ๋‹ค์‹œ ๋น„๊ตํ•ด์ฃผ์—ˆ๋‹ค.

Step 3.
 ๋‹ค์Œ์œผ๋กœ sequence๋ฆฌ์ŠคํŠธ์˜ top, ์ฆ‰ sequence[-1]์ด ์ž…๋ ฅ๋œ tmp๊ฐ’๊ณผ ๊ฐ™๋‹ค๋ฉด sequence๋ฆฌ์ŠคํŠธ์—์„œ pop์„ ํ•ด์ฃผ๊ณ  ๋™์‹œ์— res๋ฆฌ์ŠคํŠธ์—๋Š” -๋ฅผ appendํ•ด์ค€๋‹ค.
 ๋งŒ์•ฝ sequencd[-1]์ด tmp์™€ ๋‹ค๋ฅด๋‹ค๋ฉด ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ ์ž„์˜์˜ ์ˆ˜์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— check๋ฅผ False๋กœ ์ดˆ๊ธฐํ™” ํ•ด์ค€ ํ›„์— break๋กœ for๋ฌธ์„ ๋น ์ ธ๋‚˜๊ฐ€๋„๋ก ํ•˜์˜€๋‹ค.

Step 4.
 ์„ฑ๊ณต์ ์œผ๋กœ for๋ฌธ์„ ๋‹ค ๋Œ์•˜๋‹ค๋ฉด check๊ฐ€ True์ผ ๊ฒƒ์ด๊ณ  ์ด ๊ฒฝ์šฐ์—๋Š” res๋ฆฌ์ŠคํŠธ์˜ ์›์†Œ๋“ค์„ ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•ด์ค€๋‹ค.
 ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด, check๊ฐ€ False์ผ ๊ฒƒ์ด๊ณ  ์ด ๋•Œ๋Š” NO๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค.

๐Ÿ–Š ๋‚˜์˜ ์ฝ”๋“œ

import sys

if __name__ == "__main__":
    n = int(input())
    sequence = []
    res = []
    num = 1
    check = True
    for _ in range(n):
        tmp = int(input())
        while num <= tmp:
            sequence.append(num)
            res.append('+')
            num += 1
        if sequence[-1] == tmp:
            sequence.pop()
            res.append('-')
        else:
            check = False
            break

    if check:
        for r in res:
            print(r)
    else:
        print("NO")