본문 바로가기
알고리즘 풀이/백준

[백준 1158] 요세푸스 문제 (python)

by char_lie 2023. 3. 27.
반응형

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

 

1158번: 요세푸스 문제

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

www.acmicpc.net

요세푸스 문제

순서대로 이루어진 원형에서 순서대로 게속해서 K번째 숫자를 제거해서 모두 제거될 때까지 반복하는 문제

큐의 개념을 알고 있다면 간단하게 해결 할 수 있다.

⚙️내가 푼 정답코드

import sys
from collections import deque
N, K = map(int, sys.stdin.readline().split())
queue = deque([i for i in range(1,N+1)])
print("<",end='')
while True:
    for _ in range(K-1):
        queue.append(queue.popleft())
    print(queue.popleft(),end='')
    if queue: 
        print(', ',end='') # 출력 형태 맞춰 출력하기
    else :
        break
print('>')
반응형

📌문제 접근 포인트

1. 특정 횟수가 될 때까지 숫자를 뒤로 보내고, 원하는 숫자가 되면 꺼내는 반복을 작업해보자.
2. 잘 생각해보면 큐와 같은 구조를 갖고 있다. 큐를 이용해서 알고리즘을 구성해보자.
3. 출력형식만 잘 맞게 구조화해서 출력해주면 쉽게 풀 수 있다.
반응형

댓글