하루일문

[백준] 1158 큐 (파이썬) 본문

algorithm/baekjoon

[백준] 1158 큐 (파이썬)

support_u 2023. 3. 4. 08:07

문제

 

1158번: 요세푸스 문제

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

www.acmicpc.net

 

풀이

N, K = map(int, input().split())

li=[]
li_2 = []

for i in range(1, N + 1):
    li.append(i)

k = K -1
while li:    
    if k >= len(li):
        while k >= len(li):
            k -= len(li)
        li_2.append(str(li.pop(k)))
        k -= 1
    else:
        li_2.append(str(li.pop(k)))
        k -= 1
    k += K
print("<%s>" %(", ".join(li_2)))

 

해설

개인적으로 이 문제의 포인트는 출력이라고 생각한다.

" ".join(list)는 " "에 있는 것을 붙여서 리스트의 각 항목을 생성한다.

%s는 문자 %를 넣어준다. 그래서 str로 append했다