[백준] 11866번 요세푸스 문제 0

거북이·2023년 1월 2일
0

백준[실버5]

목록 보기
25/114
post-thumbnail

💡문제접근

직접적으로 정답을 보지 않고 알고리즘 분류에 적혀 있던 자료 구조와 큐를 직접 구글링하여 어떤 자료 구조인지 명확히 인지한 다음 이 자료 구조를 이용해서 어떻게 작성해야할지 고민했다.

💡코드

N, K = map(int, input().split())
arr = [i for i in range(1, N+1)]

queue = []
t = 1
while True:
    if arr == []:
        break
    else:
        if t >= K and t % K == 0:
            temp = arr.pop(0)
            queue.append(temp)
        else:
            temp = arr.pop(0)
            arr.append(temp)
        t += 1

print("<", end="")
for i in range(len(queue)):
    if i == len(queue)-1:
        print(queue[i], end="")
    else:
        print(queue[i], end=", ")
print(">")

📌 자료구조 : 큐(queue) - 선입선출(FIFO)

선입선출(FIFO)이란, 먼저 들어간 데이터가 먼저 밖으로 나온다는 의미이다.
파이썬에서 큐(queue)를 사용하는 가장 간단한 방법은 list를 사용하는 것이다.
list 객체에서 pop(0)을 사용하면 맨 앞에 있는 데이터를 제거할 수 있다.
list 객체에서 append()를 사용하면 맨 뒤에 데이터를 추가할 수 있다.

💡소요시간 : 31m

0개의 댓글