백준/Stack, Queue

1874번 스택 수열

Snowboarder 2022. 9. 17. 17:16
 

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

문제풀이

n = int(input())
s = []
op = []  # 답
count = 1
temp = True

for i in range(n):
    num = int(input())
    while count <= num:
        s.append(count)
        op.append('+')
        count += 1
    if s[-1] == num:
        s.pop()
        op.append('-')
    else:
        temp = False


if temp == False:
    print('NO')
else:
    for i in op:
        print(i)

문제해석

  • 핵심 : 스택 사용
  • 1부터 입력으로 주어진 숫자(예를 들어 8)를 오름차순으로 스택에 push하면서 적절히 pop해 입력으로 주어진 수열 4, 3, 6, 8, 7, 5, 2, 1을 만들면 된다.

총정리

  • 문제를 이해를 조금더 이해를 했더라면 쉬웠을 문제이다
  • 결국 항상 if문을 어떻게 걸어줄 것이냐 for 로 되지않으면 while로 돌린다고 생각하기!

'백준 > Stack, Queue' 카테고리의 다른 글

1406번 에디터  (0) 2023.01.05
9093번 단어 뒤집기  (0) 2023.01.04