백준

백준 11866번: 요세푸스 문제 0

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

 

11866번: 요세푸스 문제 0

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

www.acmicpc.net

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import sys
import copy
from collections import deque
n, m = map(int,sys.stdin.readline().split())
= deque([])
nr = deque([])
tr = deque([])
result = []
for i in range(n):
    r.append(i+1)
if m==1:
    for i in range(n):
        result.append(i + 1)
else:
    for j in range(n):
 
        for i in range(m-1,len(r),m):
            result.append(r[i])
            r[i]=0
        if len(r)<m:
            if m % len(r) == 0:
                result.append(r[-1])
                r[-1= 0
            if m%len(r)!=0:
                for i in range(len(r),m%len(r), -1):
                    tr.appendleft(r[i-1])
                    r[i-1]=0
                result.append(r[i-2])
                r[i-2]=0
        if len(r)>m:
            for i in range(len(r),len(r)-len(r)%m,-1):
                tr.appendleft(r[i-1])
                r[i-1]=0
        tr = tr + r
        for li in tr:
            if li not in nr:
                nr.append(li)
        tr = deque([])
        nr.remove(0)
        r = deque([])
        r = copy.deepcopy(nr)
        nr = deque([])
        if len(r)<m:
            if len(r)==1:
                result.append(r[0])
                break
print("<", end = "")
for i in range(len(result)):
    if i==len(result)-1:
        print(result[i], end="")
        break
    print(result[i], end=", ")
print(">")
 
cs

'백준' 카테고리의 다른 글

백준 14500번: 테트로미노  (0) 2021.07.02
백준 4949번: 균형잡힌 세상  (0) 2021.06.29
백준 4963번: 섬의 개수  (0) 2021.05.20
백준 1012번: 유기농 배추  (0) 2021.05.20
백준 11724번: 연결 요소의 개수  (0) 2021.05.20