11866 : 요세푸스 문제 0

서희찬·2021년 9월 23일
0

백준

목록 보기
45/105

문제

import sys

코드

 

n,k = map(int,sys.stdin.readline().split()) # n,k 입력받기 
arr = [i for i in range(1,n+1)]

ppl = []
idx = 0 

for i in range(n):
    idx += k-1
    if(idx>=len(arr)):
        idx = idx%len(arr)

    ppl.append(str(arr.pop(idx)))

print("<",", ".join(ppl),">",sep="")

해설

idx를 k-1씩 상승해주고 배열의 길이를 넘었을때 길이랑나눠서 남은 나머지를 저장시키고 다시 반복해주면 되는 문제이닷

다만 출력에서 !

join함수를 사용하기 위해서 str로 변형해서 값을 append 시켜야한다.
join함수는 파이썬에서 문자열을 다룰때 최강의 무기라고 할 수 있다 !
바로 ppl 리스트의 앞에 ", " 이것을 기준으로 하나씩 출력해주기때문에
우리가 원하는 출력 결과를 얻을 수 있다.
다만 sep=""로 해줘야지 원하는 출력결과이닷 !

profile
부족한 실력을 엉덩이 힘으로 채워나가는 개발자 서희찬입니다 :)

0개의 댓글