๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€

[BAEKJOON] 1874 | ์Šคํƒ ์ˆ˜์—ด

by flowing1ife 2024. 11. 12.

๐Ÿ”Ž 1874 | ์Šคํƒ ์ˆ˜์—ด

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


๐Ÿ’ก Solution

Callout Box
โœ๐Ÿป
Logic
1. ํ•ด๋‹น ์ˆ˜์—ด์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ๋ชฉํ‘œ๋กœํ•˜๋Š” ์ˆ˜์—ด์˜ ์ˆ˜๊นŒ์ง€ ์Šคํƒ์— ์ˆ˜๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.
2. ์ดํ›„, ์Šคํƒ์˜ top ์›์†Œ๊ฐ€ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ์ˆ˜์™€ ๊ฐ™์œผ๋ฉด pop ํ•ด์ค€๋‹ค.
3. ์œ„์˜ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉฐ, ๋งŒ์•ฝ 1๋ฒˆ ๊ณผ์ •์„ ๋งˆ์นœ ํ›„ 2๋ฒˆ ๊ณผ์ •์˜ ์กฐ๊ฑด์ด ์ถฉ์กฑ์ด ์•ˆ๋˜๋ฉด ์ˆ˜์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค.
import sys
input =  sys.stdin.readline

n = int(input())
num_list = [int(input()) for _ in range(n)]

def findNumList(n, num_list) :
    stack = []
    result = []
    
    i = 0
    m = 1
    for i in range(n) :
        num = num_list[i]
        
        while m <= num :
            stack.append(m)
            result.append('+')
            m += 1
        
        if stack[-1] == num :
            stack.pop()
            result.append('-')
        else :
            return 0
            
    return result
    
result = findNumList(n, num_list)

if result :
    for d in result :
        print(d)
else :
    print('NO')

import sys
input =  sys.stdin.readline

n = int(input())
num_list = [int(input()) for _ in range(n)]

def findNumList(num_list) :
    stack = []
    result = []
    
    i = 0
    m = 1
    max_num = max(num_list)
    while m <= max_num : 
        if m <= num_list[i] :
            stack.append(m)
            result.append('+')
            m += 1
            
        while stack and stack[-1] == num_list[i]:
            stack.pop()
            result.append('-')
            i += 1
            if i >= len(num_list):  # ๋ฆฌ์ŠคํŠธ ๋๊นŒ์ง€ ๋„๋‹ฌํ•˜๋ฉด ์ค‘๋‹จ
                break
    
    if len(stack) == 0:
        return result
    else:
        return 0
        
result = findNumList(num_list)

if result :
    for d in result :
        print(d)
else :
    print('NO')
Toggle Example
โ–ถ ๐Ÿ“Œ Note
โˆ™ ์‹œ๊ฐ„์ดˆ๊ณผ ๋ฌธ์ œ๋กœ ๋งŽ์ด ์• ์“ด ๋ฌธ์ œ
1. ์ˆ˜์—ด์„ ์ฐพ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ์˜ else ์ฒ˜๋ฆฌ๋ฅผ ์ž˜๋ชปํ•ด์„œ ๋ฌดํ•œ๋ฃจํ”„๋ฅผ ๋Œ๊ฒŒ ๋จ.
2. ์˜ˆ๋ฅผ ๋“ค์–ด 5,3 ์ˆ˜์—ด์ด๋ผ๋ฉด ์ด๋ฏธ '5'์—์„œ m์€ 5๊นŒ์ง€ ๊ฐ„ ํ›„ 5๋ฅผ pop ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— stack์˜ top์€ 4, m์€ 5์ด๊ธฐ์— ๋‘๋ฒˆ์งธ ์ˆ˜์ธ 3๋ณด๋‹ค๋Š” ํฌ๋ฏ€๋กœ ๊ณ„์†ํ•ด์„œ ์กฐ๊ฑด์ด ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ์ฒดํฌ๋˜์ง€๋งŒ break๋ฅผ ํ•  ์ˆ˜ ์—†์Œ.
๐Ÿ“์ฐธ๊ณ  : https://www.acmicpc.net/board/view/152451