🔔 문제

출처 : https://www.acmicpc.net/problem/2164

image


🔐 해결 (소스 코드)

# deque를 활용한 풀이
from collections import deque

N = int(input())
queue = deque([i+1 for i in range(N)])
# ex) N = 4, queue = deque([1, 2, 3, 4])

while len(queue) > 1: # queue의 길이가 1보다 클 때까지만 while문 실행
    queue.popleft() # (우선, 제일 위에 있는 카드를 바닥에 버린다)
    temp = queue.popleft() # temp :: 맨 위에서 제일 아래로 옮길 카드의 숫자를 담을 임시변수
    queue.append(temp) # (제일 아래로 옮김)

print(queue.pop()) # 마지막 남은 카드 숫자를 알기 위해 pop() 사용

📝 후기

큐 자료구조에 대해서 알고 있다면 쉽게 풀 수 있는 문제였다.

다만, 시간 초과가 나와서 실패할 가능성 때문에 파이썬 라이브러리 중 하나인 deque을 활용해서 풀어보았고, 특별한 문제 없이 정답 처리가 되었다.

큐를 응용한 문제 중에서 매우 쉬운 편에 속하는 문제일 것 같다.

많이 부족한 나… 아직 갈 길이 멀다…


👣 참고하기

큐(Queue) 강의 정리노트 보기

백준 18258번: 큐 2 문제 풀이 보기

맨 위로 이동하기

Leave a comment