MapleStory Finger Point

[BOJ] #1874 - 스택 수열

2021. 6. 12. 02:01Problem Solving/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

 

** 문제 유형

  • 스택, 그리디

 

** 풀이

  1. 스택에 원소 삽입시, 단순히 특정 수에 도달할 때까지 삽입
  2. 스택에서 원소를 연달아 빼낼 경우, 그 수들이 내림차순으로 빠지는지 확인

 

n = int(input())

cur = 1
stack = []
rslt = []

for i in range(1, n + 1):
    out = int(input())

    while cur <= out: # 입력된 수에 도달할 때까지 삽입
        stack.append(cur)
        rslt.append('+')
        cur += 1

    if stack[-1] == out: # 스택의 최상위 원소일 때
        stack.pop()
        rslt.append('-')
    else: # 불가능한 경우
        print("NO")
        exit(0)

print('\n'.join(rslt))

 

 

'Problem Solving > Online Judge' 카테고리의 다른 글

[BOJ] #10930 - SHA-256  (0) 2021.06.13
[BOJ] #5397 - 키로거  (0) 2021.06.13
[BOJ] #1966 - 프린터 큐  (0) 2021.06.12
[BOJ] #2798 - 블랙잭  (0) 2021.06.12
[BOJ] #2920 - 음계  (0) 2021.06.11