-
스택 - 백준 1874Code Etc/코딩테스트 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)
이렇게 문제를 풀어봤다.
정보처리기사 공부하면서 자료구조에 대해서도 나오는데 알고리즘풀이를 공부하다보니
기사준비가 꽤나 수월하다.
알고리즘을 모두 정복하는 그날까지 화이팅!
반응형'Code Etc > 코딩테스트' 카테고리의 다른 글
누적합 - 백준 11659, 2559 (0) 2023.04.28 큐, 덱 - 백준 5430 (1) 2023.04.16 동적계획법(Dynamic Programing) - 백준 1149,1932,2579,2156,11053,11054,2565,12865,9251 (0) 2023.04.02 🎉🎉 백준 골드5 달성!-! (0) 2023.03.29 백트래킹 - 백준 9663, 2580, 14888, 14889 (0) 2023.03.24