๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿงฉps/๐Ÿ”ฅNormal

[๋ฐฑ์ค€ 1874๋ฒˆ] ์Šคํƒ ์ˆœ์—ด

by goguma.dev 2024. 9. 27.

๐Ÿ“–๋ฌธ์ œ:

 

๐Ÿ“™ํ’€์ด:

์Šคํƒ์˜ ํŠน์ง•์ธ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ž…๋ ฅ๋œ ์ˆซ์ž๊ฐ€ pop()์—์„œ ์ถœ๋ ฅ๋œ๋‹ค๋Š” ๊ฐœ๋…์„ ๋†“์น˜๊ณ  ์žˆ์–ด์„œ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค.

์ด ํŠน์ง•๋งŒ ํ™œ์šฉํ•˜๋ฉด ์ƒ๋‹นํžˆ ์‰ฌ์›Œ์ง€๋Š” ๋ฌธ์ œ๋‹ค.

 

 

โœ๏ธ์ฝ”๋“œ:

'''
https://www.acmicpc.net/problem/1874
๋ฌธ์ œ: ์Šคํƒ ์ˆœ์—ด
๋‚œ์ด๋„: ์‹ค๋ฒ„2
'''

import sys

def ๋ฐฑ์ค€1874():
    n = int(input())  # ์ž…๋ ฅ ๋ฐ›์„ ์ˆซ์ž์˜ ๊ฐœ์ˆ˜
    sequence = [int(sys.stdin.readline()) for _ in range(n)]  # ์ž…๋ ฅ ์ˆ˜์—ด
    
    stack = []  # ์Šคํƒ
    answer = []  # ์ถœ๋ ฅํ•  ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ
    current = 1  # ์Šคํƒ์— ๋„ฃ์„ ์ˆซ์ž
    possible = True  # ์ˆ˜์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€
    
    for num in sequence:
        # ์ž…๋ ฅ๋œ ์ˆซ์ž๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ˆซ์ž๋ฅผ ์Šคํƒ์— ๋„ฃ์Œ
        while current <= num:
            stack.append(current)
            answer.append('+')
            current += 1
        
        # ์Šคํƒ์˜ ๋งˆ์ง€๋ง‰ ์ˆซ์ž๊ฐ€ ์ž…๋ ฅ ์ˆซ์ž์™€ ๊ฐ™์œผ๋ฉด pop
        if stack and stack[-1] == num:
            stack.pop()
            answer.append('-')
        else:
            possible = False
            break
    
    if possible:
        # ๊ฐ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅ
        print('\n'.join(answer))
    else:
        print("NO")

๋ฐฑ์ค€1874()

 

๐Ÿ”—๋งํฌ:

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