티스토리 뷰

문제 링크

 

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

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

www.acmicpc.net

문제 풀이

n = int(input())
waitingQueue = list(map(int, input().split()))
waitingStack = []
turn = 1

while waitingQueue:
    if waitingQueue[0] == turn:
        waitingQueue.pop(0)
        turn += 1
    else:
        waitingStack.append(waitingQueue.pop(0))

    while waitingStack:
        if waitingStack[-1] == turn:
            waitingStack.pop()
            turn += 1
        else:
            break

if len(waitingStack) == 0:
    print("Nice")
else:
    print("Sad")

12789 입출력 예시

*key point: 처음 서있는 줄은 queue, 잠시 빠져서 대기 하는 줄은 stack의 형태로 볼 수 있다. 현재 들어가야하는 번호를  turn이라는 변수에 저장하고, while문을 활용해서 기능을 구현한다. queue의 0 index에 turn이 있으면 빼고 아니면 stack으로 이동, stack의 -1 index에 turn이 있으면 빼고 아니면 넘어가는 식으로 구현할 수 있다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함