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

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

by char_lie 2023. 2. 21.
반응형

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

 

11866번: 요세푸스 문제 0

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

www.acmicpc.net

요세푸스 문제 0

1번부터 N번까지 N명의 사람이 원을 앉아 이뤄 K번째 사람을 제거하는 문제

100% 내 생각으로 풀었는가?
→ O

원을 그리고 3명 간격으로 사람을 빼낸다고 생각하면 쉽게 해결할 수 있던 문제

내가 푼 정답 코드

import sys
from collections import deque
N, K = map(int, sys.stdin.readline().split())
queue = deque()
result = []

for i in range(1,N+1):
    queue.append(i) # 문제 조건, N까지의 숫자를 K간격으로 뺄거니까 큐에 N까지 숫자 삽입

while queue:
    for _ in range(K-1): #K-1번까지
        queue.append(queue.popleft()) # 맨앞에 요소를 빼서 맨뒤로 보내기
    result.append(queue.popleft()) # K번째 요소를 빼서 결과물인 result에 넣어주자
    
#출력 형식 맞춰서 넣어주기
print("<",end ='')
for j in range(N-1): 
    print('%d, '%result[j],end='')
print(result[-1],end='')
print(">")

큐의 기본 개념을 이해하고 있다면 쉽게 풀수 있는 문제였으나, 출력형식 모양 맞춰준다고 틀렸습니다를 몇번 받은 문제..


느낀점

지금 딱 queue의 개념에 대해서 배우고 사용해보는 단계로 배워보고 있다.

딱 완전히 Queue의 기본에 대해서 이해하면 쉬울 문제여서 어렵지않게 풀었는데, 딱 큐와 관련된 이론 설명을 듣고나서 문제를 풀어보니 쉽게쉽게 풀리는게 좋았다고 생각한다.

완전 기본 문제 급이라서 한번쯤 풀어보면 좋을 문제!

반응형

댓글