파이썬 백준 11866번
실버5
https://www.acmicpc.net/problem/11866
문제 보기
문제 풀기
초기 숫자열을 K 만큼 for loop 을 돌리면서 K 전까지는 이동을 위한 if 문,
K 에 도달했을때 그 수를 제거 및 josephus_seq = deque() 에 추가를 위한 elif 문을 사용하는 규칙을 갖는 함수 작성.
숫자열의 개수가 0 이 될때까지 while loop 을 돌리는데 fnRule 함수를 반복 실행함.
출력 답안의 포맷을 맞추기 위한 for 문 작성.
코드 보기
import sys
inputdata = sys.stdin.readline
from collections import deque
N, K = map(int, inputdata().split())
nums_seq = deque([i for i in range(1, N + 1)])
josephus_seq = deque()
print(f'initial sequence: {nums_seq}') #
def fnRule():
for i in range(1, K + 1):
if i != K:
move_num = nums_seq.popleft()
nums_seq.append(move_num)
print(nums_seq) #
elif i == K:
save_num = nums_seq.popleft()
josephus_seq.append(save_num)
print(nums_seq) #
print(i) #
while len(nums_seq) > 0:
fnRule()
# To match the output answer format
print('<', end='')
for j in josephus_seq:
if j != josephus_seq[-1]:
print(j, end='')
print(', ', end='')
elif j == josephus_seq[-1]:
print(j, end='')
print('>')
# 7 3
# initial sequence: deque([1, 2, 3, 4, 5, 6, 7])
# deque([2, 3, 4, 5, 6, 7, 1])
# 1
# deque([3, 4, 5, 6, 7, 1, 2])
# 2
# deque([4, 5, 6, 7, 1, 2])
# 3
# deque([5, 6, 7, 1, 2, 4])
# 1
# deque([6, 7, 1, 2, 4, 5])
# 2
# deque([7, 1, 2, 4, 5])
# 3
# deque([1, 2, 4, 5, 7])
# 1
# deque([2, 4, 5, 7, 1])
# 2
# deque([4, 5, 7, 1])
# 3
# deque([5, 7, 1, 4])
# 1
# deque([7, 1, 4, 5])
# 2
# deque([1, 4, 5])
# 3
# deque([4, 5, 1])
# 1
# deque([5, 1, 4])
# 2
# deque([1, 4])
# 3
# deque([4, 1])
# 1
# deque([1, 4])
# 2
# deque([4])
# 3
# deque([4])
# 1
# deque([4])
# 2
# deque([])
# 3
# <3, 6, 2, 7, 5, 1, 4>
'공부하기 > 백준' 카테고리의 다른 글
[Python] 백준 풀기 4949 - 균형잡힌 세상 (0) | 2022.09.21 |
---|---|
[Python] 백준 풀기 15652 - N과 M (4) (2) | 2022.09.21 |
[Python] 백준 풀기 15651 - N과 M (3) (0) | 2022.09.20 |
[Python] 백준 풀기 15650 - N과 M (2) (0) | 2022.09.19 |
[Python] 백준 풀기 15649 - N과 M (1) (0) | 2022.09.18 |