728x90
반응형

VERSION 2.0

import sys

from collections import deque

#N장의 카드 , 1번이 가장 위 n번이 가장 아래

# 1 2 3 4 ==> 1버리기 ==> 2 3 4 ==> 2를 아래로 ==> 3 4 2
# 3 4 2 ==> 3 버리기 ==> 4 2 ==> 4를 아래로 ==> 2 4
# 2 4 ==> 2 버리기 ==> 4
N = int(sys.stdin.readline())
A = deque([i for i in range(1, N+1)])

while len(A) > 1:
    A.popleft()

    A.append(A.popleft())

print(* A)

==> DEQUE 으로 풀면 쉽다.

 

 

 

VERSION 1.0

import sys
from collections import deque

N = int(sys.stdin.readline())
queue = deque()
for i in range(N):
    queue.append(i+1)

while True:
    if len(queue) == 1:
        print(queue[0])
        break
    else:
        queue.popleft()
        # print(queue)
        queue.append(queue.popleft())
        # print(queue)

 

1. queue.popleft() 맨처음 위에꺼 삭제 

 

2. queue.append(queue.popleft()) ==> popleft() 먼저 실행 ==> 나중에 queue 에 적재 ==> 한번에 실행가능

728x90
반응형

+ Recent posts