Code Etc/코딩테스트
스택 - 백준 1874
CoderHan
2023. 4. 11. 13:54
반응형
스택이란 Last In First Out의 구조를 갖는 자료구조의 일종이다.
이를 구현하는 문제들을 전부 풀어보았는데 가장 고난이도 문제를 가져왔다
스택은 전에 공부한 적이 있어서 꽤 수월하게 풀어냈다.
바로 문제를 보자
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
n = int(input()) #전체 숫자 갯수
stack = []
answer = []
flag = 0 #가능여부를 따지는 flag
cur = 1 #오름차순으로 숫자를 넣으므로 거기에 사용할 currentNumber
for i in range(n):
num=int(input())
while cur <= num : #num을 제일 먼저 출력해야하므로 stack의 마지막에 올때까지 담는다
stack.append(cur)
answer.append('+')
cur += 1
if stack[-1] == num : #stack의 맨 마지막 숫자와 num이 같다면 출력한다.
stack.pop()
answer.append('-')
else :
#여기서 출력해야하는 숫자가 cur보다 작고 stack의 마지막에 있지 않으면 Error이다.
#왜냐하면 오름차순으로 숫자를 담았기 때문에 cur보다 작은 숫자들은
#이미 stack안에 있기 때문이다.
print('NO')
flag = 1
break
if flag == 0 :
for i in answer :
print(i)
이렇게 문제를 풀어봤다.
정보처리기사 공부하면서 자료구조에 대해서도 나오는데 알고리즘풀이를 공부하다보니
기사준비가 꽤나 수월하다.
알고리즘을 모두 정복하는 그날까지 화이팅!
반응형