목차
https://www.acmicpc.net/problem/12789
문제의 조건을 놓쳐 틀린 코드
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")
'코딩테스트[파이썬] > 백준 (BOJ)' 카테고리의 다른 글
백준 1010 - 다리놓기[조합] (0) | 2024.02.17 |
---|---|
백준 2346 - 풍선터트리기 [큐] (0) | 2024.02.16 |
백준 17103 - 짝[소수약수배수] (0) | 2024.02.16 |
백준 1934 - 최소공배수[유클리드 호제법] (2) | 2024.02.16 |
백준 11659 -구간 합 (0) | 2024.02.15 |