Algorithm Problem/Python

[python] λ°±μ€€ - 1874. μŠ€νƒ μˆ˜μ—΄

deo2kim 2020. 10. 25. 08:52
λ°˜μ‘ν˜•

πŸ€”λ¬Έμ œ ν•΄κ²°

  • S2 | μŠ€νƒ μˆ˜μ—΄

μŠ€νƒμ„ μ΄μš©ν•œ 문제

  • μŠ€νƒμ— 값이 있고 μŠ€νƒμ˜ λ§ˆμ§€λ§‰ 값이 뽑아야 ν•˜λŠ” 값이면 pop
  • 그렇지 μ•Šμ„ λ•Œ λ„£μ–΄μ•Όν•  μˆ«μžκ°€ n보닀 μž‘μœΌλ©΄ push
  • λ‘˜ λ‹€ μ•„λ‹ˆλ©΄ break

μŠ€νƒμ— 계속 λ„£λŠ” 것을 λ¨Όμ € μƒκ°ν•˜λŠ” 것보닀

μŠ€νƒμ—μ„œ 값을 λΉΌλŠ” κ±Έ λ¨Όμ € 생각해야 ν•œλ‹€. ( μ—°μ†μœΌλ‘œ 뽑을 수 있기 λ•Œλ¬Έ )

 

 

πŸ’»μ†ŒμŠ€ μ½”λ“œ

import sys

input = sys.stdin.readline

numbers = []
n = int(input())
for _ in range(n):
    numbers.append(int(input()))

stack = []
result = []
number = 1
idx = 0
while idx < n:
    if stack and stack[-1] == numbers[idx]:
        stack.pop()
        idx += 1
        result.append("-")
    elif number < n + 1:
        stack.append(number)
        result.append("+")
        number += 1
    else:
        break

if stack:
    print("NO")
else:
    for r in result:
        print(r)
 

 

πŸ“•λ¬Έμ œ 확인

좜처: BACKJOON ONLINE JUDGE

 

1874번: μŠ€νƒ μˆ˜μ—΄

1λΆ€ν„° nκΉŒμ§€μ— μˆ˜μ— λŒ€ν•΄ μ°¨λ‘€λ‘œ [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 μˆ˜ν–‰ν•˜λ©΄ μˆ˜μ—΄ [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 μžˆλ‹€.

www.acmicpc.net

 

λ°˜μ‘ν˜•