๐Ÿ“ ๋ฌธ์ œ ์ดํ•ด

์ž…๋ ฅ ๋ฐ›์€ ์ˆ˜์—ด์˜ ์ฒซ๋ฒˆ์งธ ํ•ญ๊นŒ์ง€ ๋ชจ๋‘ stack์— ๋„ฃ๊ณ , ์Šคํƒ์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ popํ•˜๋ฉด ์ˆ˜์—ด์˜ ์ฒซ๋ฒˆ์งธ ํ•ญ์ด ์™„์„ฑ๋œ๋‹ค.

 

์˜ˆ์ปจ๋Œ€ 4 3 6 8 7 5 2 1 ์ˆ˜์—ด์ด ์žˆ์œผ๋ฉด ,2,3,4๊นŒ์ง€ stack์— pushํ•˜๊ณ  pop์„ ํ•˜๋ฉด 4๊ฐ€ pop ๋˜๋ฉด์„œ ์ˆ˜์—ด์˜ ์ฒซ๋ฒˆ์งธ ํ•ญ์ด ์™„์„ฑ๋œ๋‹ค.

 

๋งŒ์•ฝ stack์˜ top(๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— push๋œ ๊ฐ’)์ด ์ž…๋ ฅ ๋ฐ›์€ ์ˆ˜์—ด๊ณผ ๊ฐ™๋‹ค๋ฉด popํ•ด์ฃผ๊ณ , ๋˜ ๋‹ค์‹œ ๋‹ค์Œ ํ•ญ์˜ ์ˆ˜์—ด๋งŒํผ stack์— pushํ•˜๊ณ  ์กฐ๊ฑด๋ฌธ์„ ํ†ตํ•ด ๊ฒ€์‚ฌํ•˜๊ณ .. ๋‹ค์Œํ•ญ์ด stack์˜ top์— ์—†๋‹ค๋ฉด 'NO'๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค.

 

 

๐Ÿ”Ž ๋‚ด๊ฐ€ ์ฒ˜์Œ ์ง  ์ฝ”๋“œ 

#์ค‘๊ฐ„ ๋‹จ๊ณ„ ๋ฉ”๋ชจ๋ฉ”๋ชจ
n = int(input())
sequence = range(1,n+1)
num, stack = [], []

for _ in range(n): # ์ž…๋ ฅ ๋ฐ›๊ธฐ
    num.append(int(input())) 
    
for i in range(num[0]):
    stack.append(sequence[i]) # ์ˆ˜์—ด์˜ ์ฒซ๋ฒˆ์งธ ํ•ญ๊นŒ์ง€ stack์— ๋ชจ๋‘ push & '+' ์ถœ๋ ฅ
    print('+')

for _ in range(num[1]):
    if num[1] in stack:
        stack.pop()
        print('-')



    

print(stack)

๐Ÿ”Ž ์ˆ˜์ •ํ•œ ์ฝ”๋“œ

import sys
n = int(input())
stack = []
seq = 1

for _ in range(n): # ์ž…๋ ฅ ๋ฐ›๊ธฐ
    num = int(sys.stdin.readline())
    while seq <= num: # ์ž…๋ ฅ ๋ฐ›์€ ์ˆ˜๊นŒ์ง€ stack์— ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ push
        stack.append(seq) 
        print('+')
        seq += 1 # 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆ˜์—ด sequence
    
    if stack[-1] == num:
        stack.pop()
        print('-')

    else:
        print('NO')
        break

 

 

1. ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ์—†์• ๊ธฐ ์œ„ํ•ด sys.stdin.readline()์œผ๋กœ ์ž…๋ ฅ์„ ๋ฐ›์•˜๋‹ค.

sys.stdin.readline()์€ input() ํ•จ์ˆ˜์™€ ๋‹ฌ๋ฆฌ ๊ฐœํ–‰ ๋ฌธ์ž(\n)์„ ํฌํ•จํ•ด์„œ ์ž…๋ ฅ ๋ฐ›์€ ๋ฌธ์ž๋ฅผ ๋ฆฌํ„ดํ•˜๊ณ , ์ž…๋ ฅ์œผ๋กœ '๋ฌธ์ž์—ด'์„ ๋ฐ›์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— input ํ•จ์ˆ˜๋ณด๋‹ค ๋น ๋ฅธ ์†๋„๋ฅผ ๊ฐ–๋Š”๋‹ค. 

2. while๋ฌธ ์‚ฌ์šฉ

์˜ˆ์ „๋ถ€ํ„ฐ ๋А๋ผ๋Š” ๊ฑฐ์ง€๋งŒ ๋‚˜๋Š” while์— ๋Œ€ํ•œ ๊ฑฐ๋ถ€๊ฐ์ด ์žˆ๋‹ค..๐Ÿ˜… while์„ ์“ด๋‹ค๊ณ  ํ•ด์„œ ๋ฌด์กฐ๊ฑด ๋ณต์žก๋„๊ฐ€ ์ปค์ง€๋Š” ๊ฑด ์•„๋‹Œ๋ฐ ํ™•๋ฅ ์ƒ์˜ ์ด์œ ๋งŒ์œผ๋กœ ๊ฑฐ๋ถ€ํ•˜๋Š” ์•ˆ์ข‹์€ ์ƒ‰์•ˆ๊ฒฝ์ด ์ƒ๊ธด ๊ฒƒ๊ฐ™๋‹ค. ์ด๋ฒˆ ๊ธฐํšŒ์— ์•„์ฃผ ํƒ€ํŒŒํ•˜๊ณ !! ๋ง๊ฒ ๋‹ค.

while๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌธ + break ์กฐํ•ฉ์„ ์ ์ ˆํ•˜๊ฒŒ ์ž˜ ์“ฐ๋ฉด ๋ฌธ์ œ ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋ฉด์„œ ๋ณต์žก๋„๋„ ์ ๋‹นํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊นจ๋‹ฌ์•˜๋‹ค.

 


์ด๋ ‡๊ฒŒ ์ˆ˜์ •์„ ํ–ˆ์ง€๋งŒ ์ถœ๋ ฅ ์ดˆ๊ณผ๊ฐ€ ๋–ด๋‹ค.

๊ทธ ์ด์œ ๋Š” ๋‚ด๊ฐ€ ์ž…๋ ฅ ๋ฐ›์€ ์ˆ˜๊นŒ์ง€ stack์— pushํ•  ๋•Œ print('+')๋ฅผ ํ•˜๋„๋ก ์„ค์ •ํ•ด๋’€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๐Ÿ’ฏ ์ตœ์ข…

import sys
n = int(input())
ans, stack = [], []
seq = 1
flag = True


for _ in range(n): # ์ž…๋ ฅ ๋ฐ›๊ธฐ
    num = int(sys.stdin.readline())
    while seq <= num: # ์ž…๋ ฅ ๋ฐ›์€ ์ˆ˜๊นŒ์ง€ stack์— ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ push
        stack.append(seq) 
        ans.append('+')
        seq += 1 # 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆ˜์—ด sequence
    
    if stack[-1] == num:
        stack.pop()
        ans.append('-')

    else:
        print('NO')
        flag = False
        break

if flag == True:
    print(*ans)

๐Ÿ’ก ๋ฐฐ์šด ์ 

์–ด๋–ค ๊ฐ’์ด ๋  ๋•Œ๊นŒ์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ผ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•ด์•ผ ํ•œ๋‹ค๋ฉด(์ •ํ™•ํžˆ n๋ฒˆ. ๋”ฑ ๋–จ์–ด์ง€๊ฒŒ ์กฐ๊ฑด๊ฑธ๊ธฐ ํž˜๋“  ๊ฒฝ์šฐ),

while๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ด๋•Œ ๋ฌดํ•œ๋ฃจํ”„์— ๋น ์ง€์ง€ ์•Š๊ฒŒ ์กฐ๊ฑด๋ฌธ๊ณผ break์˜ ์กฐํ•ฉ์œผ๋กœ ์ ์ ˆํ•˜๊ฒŒ ๋ฐ˜๋ณต๋ฌธ์„ ๋น ์ ธ ๋‚˜์˜ค๋„๋ก ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ์—

์ง‘์ค‘ ํ•ด์•ผ ํ•œ๋‹ค.

 

sebinChu