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

재활용병·2024년 1월 19일
0

코딩 테스트

목록 보기
93/157

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



풀이 코드 및 설명

N = int(input())
line = list(map(int, input().split()))

stack = []
current = 1

for student in line:
    while stack and stack[-1] == current:
        stack.pop()
        current += 1
    if student == current:
        current += 1
    else:
        stack.append(student)

while stack and stack[-1] == current:
    stack.pop()
    current += 1

if current - 1 == N:
    print("Nice")
else:
    print("Sad")
  1. 학생들의 수 N과 번호표 순서가 주어진 리스트 line을 입력받는다.
  2. 빈 스택을 준비하고, 현재 확인해야 할 번호표를 나타내는 변수 current를 1로 설정합니다.
  3. 번호표 순서에 따라 학생들을 순회하면서
  • 스택의 마지막 원소가 current와 같으면 스택에서 제거하고, current를 1 증가
  • 현재 학생의 번호표가 current와 같으면 current를 1 증가
  • 그렇지 않다면 학생을 스택에 추가
  1. 모든 학생을 확인한 후, 스택에 남은 학생들을 확인하면서 current와 같은 번호표를 가진 학생이 있다면 제거하고 current를 증가
  2. 최종적으로 current - 1이 N과 같으면 모든 학생이 순서대로 간식을 받을 수 있으므로 "Nice"를 출력하고, 그렇지 않다면 "Sad"를 출력
profile
코딩 말고 개발

0개의 댓글

관련 채용 정보