백준에서 문제 보기 : https://www.acmicpc.net/problem/1874
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
난이도
실버 3
알고리즘
1) N번 반복 입력
2) count로 값 세면서 stack에 저장 , 동시에 result 스택에도 '+' 저장
3) stack[-1] 번째 값이 입력값과 같을때 stack pop , result '-' 아닐시 NO
해결 방안
문제에서 요구하는 사항은 '스택'을 구현하여 해결하는 개념을 요구합니다
import sys
input = sys.stdin.readline
N = int(input())
stack = []
result = []
count = 0
flag = True
for i in range(N):
num = int(input())
while count < num:
count += 1
stack.append(count)
result.append('+')
if stack[-1] == num:
stack.pop()
result.append('-')
else:
flag = False
break
if flag:
print("\n".join(result))
else:
print('NO')
출력
![]() |
![]() |
'코딩테스트' 카테고리의 다른 글
백준(Baekjoon) 1463번 : 1로 만들기 with Python (0) | 2021.01.22 |
---|---|
백준(Baekjoon) 1080번 : 행렬 with Python (0) | 2021.01.22 |
백준(Baekjoon) 11399번 : ATM with Python (0) | 2021.01.21 |
[Baekjoon] 백준 11047번 : 동전 0 with Python (0) | 2021.01.21 |
[Baekjoon] 백준 9012번 : 괄호 with Python (0) | 2021.01.21 |
댓글