[python] 백준 11866번

도덩이의 개발 일지·2024년 9월 27일

백준

목록 보기
103/131
post-thumbnail

안녕하세요 !

오늘은 백준 - 요세푸스 문제 0을 가져왔습니다.


문제 설명


해결 방법

문제를 해결한 방법을 정리해보겠습니다.

  1. N과 K 입력을 받아주고 1 ~ N까지 순서대로 담긴 리스트를 생성합니다.
  2. 반복을 하면서 리스트에 요소가 없을 때 종료하는 조건을 생성합니다.
  3. 리스트 요소가 없어질 때까지 K번째 요소를 제거하고 제거 순서를 저장합니다.
  4. 정답을 출력합니다.

  1. N과 K 입력을 받아주고 1 ~ N까지 순서대로 담긴 리스트를 생성합니다.
arr = list(map(int, sys.stdin.readline().strip().split()))
queue = []
for i in range(1, arr[0]+1):
    queue.append(i)

  1. 반복을 하면서 리스트에 요소가 없을 때 종료하는 조건을 생성합니다.
answer = []
p = 0
while 1:
    if len(queue) == 0:
        break

  1. 리스트 요소가 없어질 때까지 K번째 요소를 제거하고 제거 순서를 저장합니다.
    p = (p + (arr[1] - 1)) % len(queue)
    answer.append(queue[p])
    queue.pop(p)

  1. 정답을 출력합니다.
print("<", end="")
for i in range(len(answer)-1):
    print(f"{answer[i]}, ", end="")
print(f"{answer[-1]}>")

전체 코드

import sys

arr = list(map(int, sys.stdin.readline().strip().split()))

queue = []
for i in range(1, arr[0]+1):
    queue.append(i)

answer = []
p = 0
while 1:
    if len(queue) == 0:
        break
    p = (p + (arr[1] - 1)) % len(queue)
    answer.append(queue[p])
    queue.pop(p)

print("<", end="")
for i in range(len(answer)-1):
    print(f"{answer[i]}, ", end="")
print(f"{answer[-1]}>")
profile
말하는 감자에서 개발자로 ( ´͈ ᵕ `͈ )◞♡

0개의 댓글