λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
CodingTest

[Python]λ°±μ€€ 1874 ::μŠ€νƒμˆ˜μ—΄ 문제 풀이

by λ„μΊλ¦¬πŸ± 2021. 5. 12.
λ°˜μ‘ν˜•

뭘 μ‚¬μš©? μŠ€νƒ λ‘κ°œ

 

μ–΄λ–»κ²Œ μ ‘κ·Ό ν•˜κ³  μ–΄λ–€ 것이 μ€‘μš”ν–ˆλ‚˜?

μŠ€νƒ1은 값듀을 λ„£λŠ” μŠ€νƒμ΄κ³  μŠ€νƒ2λŠ” μŠ€νƒ1μ—μ„œ νŒν•΄μ™€μ„œ λ§Œλ“€μ–΄μ•Ό ν•˜λŠ” μˆ˜μ—΄μ„ λ§Œλ“œλŠ” μŠ€νƒμ΄λ‹€.

λ¨Όμ €, λ§Œλ“€μ–΄μ•Ό ν•˜λŠ” 주어진 μˆ˜μ—΄μ— pinindexλ₯Ό μ„€μ •ν•΄μ„œ, ν•΄λ‹Ήν•˜λŠ” 인덱슀의 값을 μŠ€νƒ 1μ—μ„œ 찾을 수 μžˆλŠ”μ§€λ₯Ό 보고,

μ—†λ‹€ ν•˜λ©΄ 1λΆ€ν„° μ°¨λ‘€λŒ€λ‘œ μΆ”κ°€ν•΄μ€€λ‹€.

λ§Œμ•½μ— μŠ€νƒ1에 μžˆλ‹€λ©΄ μ € λ§ˆμ§€λ§‰ 값이 μ›ν•˜λŠ” 값인지λ₯Ό λ³΄λŠ”λ°, λ§Œμ•½ μ›ν•˜λŠ” 값이면 μŠ€νƒ1μ—μ„œ νŒν•΄μ„œ μŠ€νƒ 2에 λ„£μœΌλ©΄ λœλ‹€.

λ§Œμ•½μ— μ•„λ‹ˆλ©΄ 그건 λ§Œλ“€ 수 μ—†λŠ” μˆ˜μ—΄μ΄ λœλ‹€.

 

 

κ΅¬ν˜„ μ½”λ“œ( 주석 뢀뢄은 μ–΄λ–»κ²Œ λ™μž‘ν•˜λ©΄ λ˜λŠ”μ§€ νŒŒμ•… ν• λ•Œ μ“°μ˜€λ‹€.)

n = int(input())

stk_n = [] # 이 μˆ˜μ—΄μ„ λ§Œλ“€μ–΄μ•Ό 함 [4,3,6,8,7,5,2,1]
stk_1 = [] 
stk_2 = []
result = []
for i in range(n):
    stk_n.append(int(input()))
    
''''
[1,2,3,4]++++  [4,3]--
[1,2,5,6]++        [4,3,6]-
[1,2,5,7,8]++    [4,3,6,8,7,5]---
[1,2]            [4,3,6,8,7,5,2,1]--
'''

pin = 0
i = 1

while(True):
    
    if(pin <= n-1):
        pin_num = stk_n[pin] 

        if(pin_num not in stk_1):
            stk_1.append(i)
            result += '+'
            i += 1

        else:
            if(stk_1[-1]== pin_num):
                stk_2.append(stk_1.pop(-1))
                result+='-'
                pin+=1
            else:
                result = 'NO'
                break
                
    else:
        break


if(result == 'NO'):
    print(result)
else:
    for j in range(len(result)):
        print(result[j])
λ°˜μ‘ν˜•

λŒ“κΈ€