algorithm
알고리즘 기초 1/2 200-자료구조: 요세푸스 문제
park혀니
2025. 4. 8. 17:37
요세푸스 문제(python 1158)
상당히 헤멘 문제.
스택을 활용하여 지울 인덱스를 변수로 선언해서,
이를 계산해나가면서 result 리스트를 완성시킴.
N, K = map(int, input().split())
stack = [i for i in range(1, N + 1)]
result = []
num = 0
for i in range(N):
num = num + K - 1
if num >= len(stack):
num = num%len(stack)
result.append(str(stack.pop(num)))
print("<", ", ".join(result)[:], ">", sep='')
- stack = [i for i in range(1, N + 1)]와 같은 표현을 익히자
- 난 인덱스 계산을 해서 저장해두는 변수 없이 진행하였음. 그래서 난이도가 더 높게 느껴졌다
- print("<", ", ".join(result)[:], ">", sep='')와 같은 표현도 익히자.
join 문자열 합치기
- ''.join(리스트)''.join(리스트)를 이용하면 매개변수로 들어온 ['a', 'b', 'c'] 이런 식의 리스트를 'abc'의 문자열로 합쳐서 반환해주는 함수인 것입니다.
- '구분자'.join(리스트)'구분자'.join(리스트)를 이용하면 리스트의 값과 값 사이에 '구분자'에 들어온 구분자를 넣어서 하나의 문자열로 합쳐줍니다.'_'.join(['a', 'b', 'c']) 라 하면 "a_b_c" 와 같은 형태로 문자열을 만들어서 반환해 줍니다.