동캄의 코딩도장

백준 11866 [요세푸스 문제 0] 파이썬 본문

코테/BOJ

백준 11866 [요세푸스 문제 0] 파이썬

동 캄 2022. 3. 7. 15:51

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

 

11866번: 요세푸스 문제 0

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

www.acmicpc.net

# 백준 11866
N, K = map(int, input().split())
lst = [0]*(N+1)
cnt = 0
k_count = 0
i = 0
answer = []
while N != cnt:
    if lst[i % N+1] == 0:
        k_count += 1
        if k_count == K:
            lst[i % N+1] = 1
            answer.append(i % N+1)
            cnt += 1
            k_count = 0
    i += 1

print('<', end='')
for i in range(len(answer)-1):
    print(str(answer[i])+','+' ', end='')
print(str(answer[-1]), end='')
print('>', end='')

lst의 값이 1이면(존재하지 않음) 0이면 (존재)으로 구분하여 문제를 해결하였다.

from collections import deque
n, k = map(int, input().split())
s = deque([])
for i in range(1, n + 1):
    s.append(i)
print('<', end='')
while s:
    for i in range(k - 1):
        s.append(s[0])
        s.popleft()
    print(s.popleft(), end='')
    if s:
        print(', ', end='')
print('>')

다른 분의 풀이인데, deque으로 문제를 해결하였다. (정말 잘 푸셨다.)

'코테 > BOJ' 카테고리의 다른 글

백준 1987 [알파벳] 파이썬  (0) 2022.03.24
백준 7576 [토마토] 파이썬  (0) 2022.03.21
백준 2805 [나무 자르기] 파이썬  (0) 2022.03.07
백준 1966 [프린터] 파이썬  (0) 2022.03.07
백준 1874 [스택 수열] 파이썬  (0) 2022.03.07