
💡 다시 코테스터디도 시작했고, 스터디 내의 다른 분들의 코드 풀이 방식도 리뷰하기 위해서 작성해 보도록 하자!!

stack을 이용해서 풀이하였다.
import sys
T = int(sys.stdin.readline())
stack = []
array = list(map(int, sys.stdin.readline().split(' ')))
curr = 1
while(True):
# 양쪽 모두 번호가 있는 경우
if stack and array:
if array[0] != curr and stack[-1] != curr:
stack.append(array[0])
array.pop(0)
elif array[0] == curr:
array.pop(0)
curr += 1
elif stack[-1] == curr:
stack.pop()
curr += 1
elif not stack and array:
if array[0] != curr:
stack.append(array[0])
array.pop(0)
elif array[0] == curr:
array.pop(0)
curr += 1
elif not array and stack:
if stack[-1] == curr:
stack.pop()
curr += 1
else:
break
elif not stack and not array:
break
# 어짜피 array는 비어지게 된다. (12/30 피드백)
# if not stack and not array:
if not stack:
print("Nice")
else:
print("Sad")
오프라인 코테 스터디 (12/30)
참가 인원: 기우석님
for (int i = 0; i < n; i++) {
// 현재 번호가 순서와 맞다면 바로 간식을 받음
if (arr[i] == cur_value) {
cur_value++;
}
else {
// 스택이 비어있지 않으며 스택 맨 위가 순서에 맞는 경우 처리
while (!stk.empty() && stk.top() == cur_value) {
stk.pop();
cur_value++;
}
// 현재 번호를 스택에 삽입
stk.push(arr[i]);
}
}
// 남은 스택 처리
while (!stk.empty()) {
if (stk.top() == cur_value) {
stk.pop();
cur_value++;
}
else {
break; // 순서가 맞지 않으면 즉시 종료
}
}