백준12789 - 도키도키 간식드리미 (스택) Python 본문
반응형
https://www.acmicpc.net/problem/12789
문제는 입력값이 '순번'을 담고 있을 때, 해당 순번이 '스택'을 이용하여 오름차순으로 정렬할 수 있는지를 묻는다.
(스택이 무엇인지는 해당 포스팅에서 따로 다루진 않는다.)
풀이 과정은 다음과 같다.
먼저, 스택을 통과하여 결괏값을 저장하기 위한 리스트 | 스택의 역할을 할 리스트를 선언했다.
이때, 결괏값 리스트는 오름차순으로 정렬될 것이므로 미리 0을 포함시켜두었다.
이후 반복문을 통해, 해당 값이 결괏값 리스트의 마지막 값보다 1 큰지 검증하여 (오름차순이므로),
해당 검증이 옳다면 결괏값 리스트에 추가 | 그렇지 않다면 스택에 추가한다.
이때 스택에 마지막에 추가된 값이 다음 결괏값 리스트에 들어가야 할 정렬된 값일 수 있으므로
무한반복문을 통해 특정 조건이 맞으면 결괏값 리스트에 추가할 수 있게 해주었다.
이후 스택이 비어있는지 아닌지에 따라 값을 출력했다.
import sys
data_temp = sys.stdin if sys.platform == 'linux' else open('입력.txt', 'r')
input_data = data_temp.read().splitlines()
def solution (data) :
arr = list(map(int, data[1].split()))
goal = [0]
stack = []
for v in arr :
if goal[-1] + 1== v :
goal.append(v)
else :
stack.append(v)
while stack :
if goal[-1] + 1== stack[-1] :
goal.append(stack.pop())
else : break
print('Nice' if not stack else 'Sad')
solution(input_data)
반응형
'개발 > algorithm' 카테고리의 다른 글
프로그래머스 - lv.3 합승 택시요금 (다익스트라) Python (0) | 2023.11.15 |
---|---|
백준1916 - 최소 비용 구하기 (다익스트라) Python (1) | 2023.11.14 |
백준1935 - 후위 표기식 2 (스택) Python (1) | 2023.11.12 |
백준15815 - 천재 수학자 성필 (스택) Python (0) | 2023.11.11 |
백준2713 - 규현이의 사랑을 담은 문자메시지 Python (0) | 2023.11.10 |
Comments