2164번 - 카드 2

의혁·2025년 2월 4일
0

[Algorithm] 알고리즘

목록 보기
32/50

💡 맨 아래로 추가해야 하므로 Deque를 사용해야 한다.

import sys

from collections import deque;

input = sys.stdin.readline

N = int(input())

dq = deque(i for i in range(N,0,-1))

while True:
    
    if len(dq) == 1:
        break
    
    dq.pop()
    dq.appendleft(dq.pop())

print(*dq)
  • 위는 맨 뒤에서 카드를 빼서 앞으로 넣어야 하기 때문에 양방향으로 삽입, 삭제가 모두 가능한 deque를 사용하였습니다.
  • deque의 크기가 1이 될때까지 반복하면서, 맨뒤의 것을 버리고 그 후, 맨 뒤에 남아 있는걸 deque의 appendleft()를 사용해서 가장 앞으로 넣어주는 과정을 반복하였다.
  • 조금 특이하게 짰던 코드는 deque를 처음 생성시 초기화 할때, for문을 통해서 한번에 for문을 돌리면서 초기화를 진행함으로써 코드를 1줄로 줄일 수 있었다.
profile
매일매일 차근차근 나아가보는 개발일기

0개의 댓글