코딩테스트[파이썬]/백준 (BOJ)

백준 12789 - 도키도키 간식드리미

softmoca__ 2024. 2. 16. 13:50
목차

https://www.acmicpc.net/problem/12789

 

12789번: 도키도키 간식드리미

인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두

www.acmicpc.net

 

 

 

 

 

문제의 조건을 놓쳐 틀린 코드

n=int(input())
arr=list(map(int,input().split()))

stack=[]
order=1

for x in arr:
    if x==order:
        order+=1
    else:
        stack.append(x)


for _ in range(len(stack)):
    if stack[-1]==min(stack):
        stack.pop()

if stack:
    print("Sad")
else:
    print("Nice")

 

문제에서 요구한 바는 말 그대로 순서대로 간식을 받는곳으로 가야했다.

하지만 위 코드에서는 해당 순서가 아니면 스택에 넣은뒤  남은 스택을 다시 순서대로 빼는 작업만 되어있다.

 

 

즉, 입력을 하나씩 검사하며 해당 순서가 아니면 스택에 넣고 그 후 바로 스택의 최상단이 그 다음 순서인지 확인하는 로직을 추가 하지 않았따..!

 

 

정답 코드


n=int(input())
arr=list(map(int,input().split()))

stack=[]
order=1

for x in arr:
    if x==order:
        order+=1
    else:
        stack.append(x)

    while stack:
        if stack[-1]==order:
            stack.pop()
            order+=1
        else:
            break

if stack:
    print("Sad")
else:
    print("Nice")