[BOJ] 12789 | 도키도키 간식드리미

Gaanii·2024년 10월 24일
0

Problem Solving

목록 보기
70/210
post-thumbnail

아래 백준 로고를 클릭하면 해당 문제로 이동합니다 😀

BOJ 로고



풀이과정


처음 입력받은 학생 순서 리스트랑 스택을 구분해서 보자.

학생은 1번부터 간식을 받으러 가야하므로 target은 1부터 시작하고, 학생의 맨 앞부터 읽어오면서 target과 같다면 리스트에서 빼주고, target += 1을 해준다.
만약 같지 않다면 스택에 넣어주고, 그 후 스택을 돌면서 스택의 가장 위(마지막 요소)가 target과 같다면 스택에서 빼주고 target += 1을 해주면 된다.

마지막에 스택이 비어있으면 Nice, 스택이 비어있지 않다면 Sad를 출력하면 된다.



코드


N = int(input())

s = []
target = 1
students = list(map(int, input().split()))

while students:
    if students[0] == target:
        students.pop(0)
        target += 1
    else:
        s.append(students.pop(0))

    while s:
        if s[-1] == target:
            s.pop()
            target += 1
        else:
            break

print('Nice' if not s else 'Sad')


결과


정답

0개의 댓글