본문 바로가기

코딩테스트/Python

[Python] 백준 #11866 - 요세푸스 문제 0

문제


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

 

11866번: 요세푸스 문제 0

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

www.acmicpc.net

 

 

풀이


N,K = map(int,input().split())

arr = [i+1 for i in range(N)] #1
answer=[]
cur=0 #2
while arr: #3
    cur = (cur+K-1)%len(arr) #4
    answer.append(arr.pop(cur)) #5
print("<"+", ".join(map(str,answer))+">") #6

현재 인덱스의 값을 pop하고 그 값을 답 리스트에 추가하는 방식으로 풀었다.

 

  1. 1~N까지 리스트 생성
  2. cur 선언. cur로 현재 인덱스를 구함
  3. arr이 비어있지 않을때동안
  4. cur에 K-1을 더해주고 arr의 길이만큼 나눈 나머지를 cur에 넣어줌
  5. arr의 cur인덱스의 값을 pop하고 answer에 더해줌.
  6. join을 사용하여 출력

 

 

느낀점


cur을 구할 때 -1을 하는 것이 바로바로 생각이 안난다.. ㅠㅠ 코드를 다 짜고 런해볼때 알아차린다.. 바로바로 생각나게 해보자..!!! 화이팅 

'코딩테스트 > Python' 카테고리의 다른 글

[Python] 백준 #2675 - 문자열 반복  (1) 2021.12.08
[Python] 백준 #10866 - 덱  (1) 2021.12.08
[Python] 백준 #2164 - 카드2  (1) 2021.12.07
[Python] 백준 #18258 - 큐 2  (1) 2021.12.07
[Python] 백준 #1874 - 스택 수열  (1) 2021.12.05