IT/코딩
(파이썬) 백준 1158 - 요세푸스 문제 python3
new1life
2022. 8. 5. 04:36
a, b = map(int,input().split())
a,b에 입력값 받기
c = [i for i in range(1,a+1)]
c에 리스트 만들기 1부터 a까지
ans=[]
ans에 출력값 넣기위함
n=0
초기값 0, b-1을 인덱스값으로 정해서 찾아주기
for i in range(a):
n+=b-1
n+b-1을 해준 인덱스를 뽑아내고 있음
if n>=len(c):
n=n%len(c)
리스트의 갯수보다 크면 못꺼냄, 그럴땐 인덱스값을 초기화 해주기 위해 모자란 만큼 나머지로 계산한다.
(원형으로 둘러쌓여 있으므로, 인덱스 맨 뒤에서 다시 맨 앞으로 가기 때문)
ans.append(str(c.pop(n)))
당첨된 값을 pop해서 ans에 넣어준다. str로 변환하는 것은 나중에 출력값을 <, , , ,>로 해야하기 때문이다.
print("<",", ".join(ans),">",sep='')
ans에 담긴 값들을 출력한다. "<" 다음에 ", "는 공백이 있다.
sep=''은 "<", ">"와 처음, 마지막 값의 공백을 없앤다.
<3, 6, 2, 7, 5, 1, 4>로 출력하라고 했기 때문이다.
저것이 없으면 < 3, 6, 2, 7, 5, 1, 4 >로 출력된다.