728x90
https://www.acmicpc.net/problem/11866
11866번: 요세푸스 문제 0
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)
www.acmicpc.net
나의 풀이
1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있을 때, 원을 따라 양의 정수 K번째 사람을 제거한다.
idx를 사용하여 원을 따라 k번째 사람을 제거하였고 idx가 len(nums) 보다 길어지면 % 연산을 하여 list의 양 끝을 이어서 문제를 해결함
import sys
input_num = list(map(int, sys.stdin.readline().split()))
nums = [i+1 for i in range(input_num[0])]
idx = input_num[1]-1
print('<',end='')
while len(nums)>1:
if idx >= len(nums):
idx = idx%len(nums)
num = nums.pop(idx)
print(num, end=', ')
idx += input_num[1]-1
print(nums[0],end='')
print('>')
다른 사람의 풀이
pop()한 원소를 list에 담지 않고 그대로 출력했는데 리스트에 담아서 join으로 출력한 코드가 깔끔해서 가져옴
n, k = map(int, input().split())
num_list = [x for x in range(1,n+1)]
ans = []
index = 0
for _ in range(n):
index += k-1
if index >= len(num_list):
index = index % len(num_list)
ans.append(str(num_list[index]))
num_list.pop(index)
print("<",", ".join(ans),">",sep="")
728x90
'Coding Test > Baekjoon' 카테고리의 다른 글
[Python] 파이썬 백준(24416) 피보나치 수1 (0) | 2023.05.30 |
---|---|
[Python] 파이썬 백준(24479) 알고리즘 수업 - 깊이 우선 탐색 1 (0) | 2023.05.23 |
[Python] 파이썬(2164) 백준 카드2 (0) | 2023.05.04 |
[Python] 파이썬 백준(15649) N과 M(1) (0) | 2023.04.10 |
[Python] 파이썬 백준(25501) 재귀의 귀재 (0) | 2023.04.09 |