백준 문제풀이/자료구조

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

peach_h 2023. 1. 25. 16:20

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

 

1158번: 요세푸스 문제

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

www.acmicpc.net

 

pop하면서 동시에 append가 되는지 몰랐음

그래서 pop하고 그 다음줄에 append하고 . . 이런 바보짓의 연속이였다.

구상까지는 했는데, total의 길이를 넘어갔을 때, total의 길이가 줄었을 때 어떡하지~~

하다가 그냥 나누고 나머지만큼만 가면 된다는 것을 알아챔

join을 잘 활용하자.

 

인덱스를 따로 만들면 되는데 바보같이 i += num -1 하다가 . . 이러면 안되는데?

계속 이런 반복이였다. 나는 밥오

 

total, num= map(int,input().split())

# 처음에 의자에 있는 사람
temp = []
for i in range(total):
    temp.append(i+1)

# 빠진 수들
pops =[]
# 제거할 인덱스
idx = 0

for i in range(total):
    idx += num-1
    if idx >= len(temp):
        idx = idx%len(temp)
    pops.append(str(temp.pop(idx)))
    
print("<",", ".join(pops),">",sep='')

'백준 문제풀이 > 자료구조' 카테고리의 다른 글

[백준] 9012 괄호 -python  (0) 2023.01.27
[백준] 10828 스택 -python  (0) 2023.01.27
[백준] 2164 카드2 -python  (0) 2023.01.27
[백준] 18258 큐2 - python  (0) 2023.01.25
[백준] 10845 큐 - python  (0) 2023.01.25