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 |