[백준/Python] 2164 카드2

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

코딩 테스트

목록 보기
95/157

[백준/Python] 2164 카드2


풀이 코드 및 설명

from collections import deque
import sys

input = sys.stdin.readline
N = int(input())

queue = deque()
for i in range(N):
    queue.append(i+1)
while len(queue) > 1:
    queue.popleft()
    queue.append(queue.popleft())
    
print(queue[0])

문제는 N이 주어졌을 때 1부터 N까지 번호가 매겨진 카드가 순서대로 놓여있고, 제일 위의 카드를 바닥에 버리고 그 다음 카드를 제일 아래로 옮기는 과정을 반복하여 마지막에 남는 카드를 찾는 문제를 해결하기 위한 것이다.

queue = deque()
for i in range(N):
    queue.append(i+1)

deque 객체를 초기화 하고 1부터 N까지의 숫자를 deque 에 차례대로 추가한다.

while len(queue) > 1:
    queue.popleft()
    queue.append(queue.popleft())
  • queue.popleft(): deque의 왼쪽(제일 위의 카드)에서 카드를 하나 제거한다. 이는 카드를 바닥에 버리는 동작이다
  • queue.append(queue.popleft()): 다음 카드를 제거한 후(popleft()), 이 카드를 deque의 오른쪽(제일 아래)으로 옮긴다다(append()). 제일 위의 카드를 제일 아래로 옮기는 동작이다.
profile
코딩 말고 개발

0개의 댓글

관련 채용 정보