minzee
개발 기록장
minzee
전체 방문자
오늘
어제
  • 분류 전체보기 (95)
    • 프로젝트 (1)
      • CheriC 체리시 (1)
      • Collec 콜렉 (0)
      • Homemaster 홈마스터 (0)
    • 회고록 (0)
    • CS 공부 (5)
    • 개발 공부 (27)
      • Modern JS Deep Dive (5)
      • JavaScript & TypeScript (3)
      • Next.js (1)
      • React (0)
      • React-Native (0)
      • HTML & CSS (7)
      • Linux (2)
      • Git & GitHub (1)
      • Kotlin (2)
      • Python (3)
      • C++ (2)
    • 코테 공부 (44)
      • BOJ (33)
      • Computer Algorithm (10)
      • Data Structures (1)
    • 활동 (15)
      • 우아한테크코스 7기 FE 프리코스 (4)
      • 원티드 프리온보딩 FE 챌린지 (1)
      • 위니브 엠버서더 3기 (10)
    • 학교 (3)

블로그 메뉴

  • Github
  • Naver Blog
  • Instagram
hELLO · Designed By 정상우.
minzee

개발 기록장

코테 공부/BOJ

[백준] 11866번 - 요세푸스 문제 0 (파이썬)

2024. 9. 29. 23:38

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


문제

요세푸스 문제는 다음과 같다.

1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 <3, 6, 2, 7, 5, 1, 4>이다.

N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오.

입력

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

출력

예제와 같이 요세푸스 순열을 출력한다.

문제 탐색하기

N과 K가 주어졌을 때, 1번부터 N번까지의 사람들이 원형으로 앉아 있다. 이때 순서대로 K번째 사람을 제거하는 과정을 반복하여 모든 사람이 제거될 때까지 진행한다. 제거된 사람들의 순서를 출력하면 된다.

코드 설계하기

1부터 N까지의 숫자를 가진 리스트를 생성하고, 현재 제거할 사람의 인덱스를 저장할 변수를 선언한다. 리스트에서 K번째 사람을 제거하고 결과 리스트에 추가한다. 제거된 후 리스트의 길이에 맞게 인덱스를 조절한다. 모든 사람이 제거될 때까지 이 과정을 반복한다.

코드

N, K = map(int, input().split())
people = list(range(1, N + 1))    # 사람들 리스트 생성
result = []    # 제거된 사람들 저장

index = 0 
while people:
    index = (index + K - 1) % len(people)    # 다음 인덱스 계산
    result.append(people.pop(index))    # 사람 제거 및 결과 추가

print("<" + ", ".join(map(str, result)) + ">")

 

저작자표시 (새창열림)

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

[백준] 2193번 - 이친수 (파이썬)  (0) 2024.09.28
[백준] 2303번 - 숫자 게임 (파이썬)  (1) 2024.09.27
[백준] 5567번 - 결혼식 (파이썬)  (0) 2024.09.26
[백준] 2204번 - 도비의 난독증 테스 (파이썬)  (1) 2024.09.25
[백준] 2644번 - 촌수계산 (파이썬)  (0) 2024.09.24
    '코테 공부/BOJ' 카테고리의 다른 글
    • [백준] 2193번 - 이친수 (파이썬)
    • [백준] 2303번 - 숫자 게임 (파이썬)
    • [백준] 5567번 - 결혼식 (파이썬)
    • [백준] 2204번 - 도비의 난독증 테스 (파이썬)
    minzee
    minzee
    🇩🇮🇬🇮🇹🇦🇱 🇲🇪🇩🇮🇦 & 🇸🇴🇫🇹🇼🇦🇷🇪 🇨🇴🇳🇻🇪🇷🇬🇪🇳🇨🇪

    티스토리툴바