본문 바로가기
Algorithm/백준 BOJ

[백준] [Python] #1158 요세푸스 문제

by 은세라 2021. 9. 24.

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

 

1158번: 요세푸스 문제

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

www.acmicpc.net

자랑은 아니지만 약 3일정도 삽질을 했다.. (이 글을 보는 여러분 힘내세요! 얘도 아직 포기 안했어요!)

처음엔 빼는 K 번째로 인덱스를 나머지 연산하고... 별의별 짓을 했는데 사람list를 조작해서 무언가를 하기엔 너무 복잡하다.

왜냐하면 pop을 하면 인덱스가 바뀌는데 이걸 반영해서 인덱스를 가지고 다시 나머지 연산을 하기란 쉽지 않았다..

그래서 찾아보니 그냥 k를 조작하는 방법이 있었다...ㅠㅜ

 

n, k = map(int, input().split())

josephus = [i+1 for i in range(n)] #사람
result = []
seqNo = k-1 #인덱스라 -1

while len(josephus):
    if seqNo >= len(josephus):
        seqNo = seqNo - len(josephus)
    else:
        result.append(str(josephus.pop(seqNo)))
        seqNo += (k-1) #한명을 뺏으니까!
print("<", ", ".join(result), ">", sep='')

'Algorithm > 백준 BOJ' 카테고리의 다른 글

[백준] [Python] #9012 괄호  (0) 2021.09.25
[백준] [Python] #2504 괄호의 값  (0) 2021.09.25
[백준] [Python] #2309 일곱 난쟁이  (0) 2021.09.24
[백준] [Python] #11279 최대힙  (0) 2021.09.23
[백준] [Python] #10828 스택  (0) 2021.09.23

댓글