-
11866. 요세푸스 문제Algorithm/Baekjoon 2023. 2. 9. 01:12
어렵지 않은 문제였고.
import sys from collections import deque input = sys.stdin.readline def josephus(n, k) : circle = deque([i for i in range(1, n+1)]) i = 1 ans = [] while circle : if i % k == 0 : ans.append(circle.popleft()) else : circle.append(circle.popleft()) i += 1 return ans n, k = map(int, input().split()) print("<" + ", ".join(map(str, josephus(n, k))) + ">")
위와 같이 풀었는데... deque에 rotate라는 요망한 친구가 있었음.
import sys from collections import deque input = sys.stdin.readline n, k = map(int, input().split()) circle = deque([i for i in range(1, n+1)]) ans = [] while circle : circle.rotate(-k+1) ans.append(circle.popleft()) print("<" + ", ".join(map(str, ans)) + ">")
코드가 훨씬 간단해집니다.
rotate 기억하기
'Algorithm > Baekjoon' 카테고리의 다른 글
16563. 어려운 소인수분해 (0) 2023.02.10 2960. 에라토스테네스의 체 (0) 2023.02.09 2504. 괄호의 값 (0) 2023.02.08 1918. 후위표기식 (0) 2023.02.07 1213. 팰린드롬 만들기 (0) 2023.02.07