[Python] 백준 12789번 : 도키도키 간식드리미

hjeu·2024년 12월 25일

백준

목록 보기
10/48
post-thumbnail

💡문제

백준 12789번 문제 링크

🍀풀이

문제를 보고 스택 문제라고 생각을 했다. 파이썬으로는 스택을 어떻게 풀어야하는지 몰라서 찾아봤는데 그냥 append와 pop을 사용하는거 같았다.

문제가 어렵지는 않은데 헷갈린 부분이 있었다.
처음에 보고 기존 대기열에 있는걸 먼저 다 끝내고 새로운 대기열을 보는건 줄 알았는데,
그게 아니라 같이 보는거였다.

코드

n = int(input())
arr = list(map(int, input().split()))
stack = []
num = 1

for i in arr:

	# 간식 받을 사람이 아니면 새로운 대기열에 넣고
    if i > num:
        stack.append(i)
    
    # 간식 받을 사람이면 num을 +1
    elif i == num:
        num += 1
    
    # 새로운 대기열에 사람이 있는지 확인하고
    while stack:
    	# 새로운 대기열의 마지막 사람이 간식 받을 사람이면 삭제하고 num을 +1
        if stack[-1] == num:
            stack.pop()
            num += 1
        else:
            break
            
# 새로운 대기열에 사람이 없으면 승환이는 간식을 먹을 수 있음
if not stack:
    print("Nice")
else:
    print("Sad")

간단하게 주석으로 설명을 해봤는데
num이라는 변수에 값을 1로 해서 기존 대기열의 리스트들과 비교를 해서 순서대로 뽑고
동시에 새로운 대기열에도 비교를 해서 순서대로 내보내는 코드를 작성했다.


profile
나는야 개발왕이 될거야! (๑ •̀ω•́)۶

0개의 댓글