728x90
반응형

https://www.acmicpc.net/problem/11866

 

11866번: 요세푸스 문제 0

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)

www.acmicpc.net

VERSION 2.0

import sys
from collections import deque

N,K  = list(map(int , sys.stdin.readline().split()))

a = deque(i for i in range(1,N+1))
res = []
while a:

    for i in range(K-1):
        a.append(a.popleft())
    res.append(a.popleft())

print(f'<{", ".join(map(str , res))}>')

==> RANGE(K-1)

 

VERSION 1.0

import sys
from collections import deque

A= list(map(int, sys.stdin.readline().split()))
queue = deque()
queue2 = deque()
for i in range(A[0]):
    queue.append(i+1)
res= []
while True:
    if len(queue) ==0:
        break
    else:
        for i in range(A[1]-1):
            queue.append(queue.popleft())
        res.append(queue.popleft())

print("<" , ", ".join(str(i) for i in res) , ">" , sep ='')

1. queue.append(queue.popleft()) ==> 덱에서 앞에꺼 popleft한거 그대로 뒤로 queue에 추가

==> for 반복문으로 3번째꺼 없애야 한다면 2번만 실행

 

2. 결과 리스트에 3번째로 없앤거 추가하기

 

 

3. print("<" , ", ".join(str(i) for i in res) , ">" , sep ='') ==> 형식 기억하자!!!

 

 

728x90
반응형

+ Recent posts