본문 바로가기
알고리즘/자료구조

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

by 임짠짠 2022. 2. 3.
반응형

 

 

 

1158번: 요세푸스 문제

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

www.acmicpc.net

코드

N, K = map(int,input().split())
ans= []
arr = [i for i in range(1,N+1)] 
num = 0
for i in range(N):
    num+=(K-1)
    if num >= len(arr):
        num %= len(arr)
    ans.append(str(arr[num]))
    arr.pop(num)

print("<",', '.join(ans),">", sep="")

 

설명

인덱스가 (K-1)인 곳을 제거해준다. 

만약 num이 리스트의 길이보다 크거나 같으면 그 값을 리스트의 길이로 나눈 나머지 값으로 설정해준다.

 

print에 변수나 값을 쉼표로 구분해서 넣으면 출력될 때 공백이 생긴다. 따라서 sep="" 를 추가해줘야 <,> 와 숫자 사이에 공백이 생기지 않는다.

 


  • Join 함수

    '_'.join(['a', 'b', 'c']) 라 하면 "a_b_c" 와 같은 형태로 문자열을 만들어서 반환해 줍니다.


반응형

'알고리즘 > 자료구조' 카테고리의 다른 글

[백준][Python] 10866번 덱  (0) 2022.02.04
[백준][Python] 2164번 카드2  (0) 2022.02.04
[백준][Python] 9012번 괄호  (0) 2022.02.03
[백준][Python] 18258번 큐 2  (0) 2022.02.03
[백준][Python] 10828번 스택  (0) 2022.02.03

댓글