728x90
반응형
https://www.acmicpc.net/problem/11866
11866번: 요세푸스 문제 0
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)
www.acmicpc.net
풀이
이 문제를 풀기 위해 deque를 사용하였다. 이유는 deque를 사용하면 배열을 회전시킬 수 있기 때문이다.
rotate()를 사용하면 괄호에 양수를 넣으면 양수 값만큼 오른쪽으로 배열이 회전하고, 음수를 넣으면 음수 값만큼 배열이 왼쪽으로 회전한다.
예제에서 3번째 사람을 계속 제거해 가야하니 배열을 왼쪽으로 3만큼 회전시키면 3번째사람이 배열의 끝에 위치하게 된다. 그러면 배열의 마지막 값을 뽑아 ans배열에 담고 이 작업을 deq가 빌때까지 반복했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
from collections import deque
n,k=map(int, input().split())
ans=[]
deq=deque()
for i in range(1,n+1):
deq.append(i)
while deq:
deq.rotate(-k)
ans.append(deq.pop())
print('<',', '.join(str(i) for i in ans),'>',sep='')
|
cs |
728x90
반응형
'Python3 > 백준 알고리즘' 카테고리의 다른 글
2022.02.24 [백준] (python 파이썬) 균형잡힌 세상 (0) | 2022.02.24 |
---|---|
2022.02.24 [백준] (python 파이썬) Hashing (0) | 2022.02.24 |
2022.02.24 [백준] (python 파이썬) 큐 (0) | 2022.02.24 |
2022.02.24 [백준] (python 파이썬) 숫자 카드 2 (0) | 2022.02.24 |
2022.02.23 [백준] (python 파이썬) 체스판 다시 칠하기 (0) | 2022.02.23 |
댓글