백준 문제 정리 1158번 - Python

이성효·2021년 7월 20일
0

백준문제

목록 보기
1/8

1158 요세푸스 문제

문제 링크 : https://www.acmicpc.net/problem/1158

  1. 한 줄에 n,k 두 가지 입력값을 넣어야 된다는 것을 깜빡하고 두 줄로 나누어서 입력받았는데, 런타임 에러가 떴다. map과 split을 이용해 해결하였음
    이전 코드 :

    n = int(input())
    k = int(input())

    수정 후 코드 :

    n, k = map(int, input().split()) 
  2. 문제를 풀고 그대로 print하여 출력하려 했지만 문제 지시 사항에 리스트 그대로 출력하는 것이 아닌, "<>" 꺽새 모양 안에 넣어 출력하라는 것을 발견. 이후 join과 포맷을 지정해 출력할때 사용하는 퍼센트 기호(%)를 사용해 출력하여 해결하였음

    완성 코드 :

    n, k = map(int, input().split()) 
    arr = []
    yose = []
    cur = 0 #current
    curr = 0 #pop(cur)
    
    for i in range(n):
    	arr.append(i+1)
    
    while len(arr) >0:
    	cur = (cur + (k-1)) % len(arr)
    	curr = arr.pop(cur) 
    	yose.append(str(curr))
    
    print("<%s>" %(", ".join(yose)))

느낀 점 : 처음 문제를 받았을 때는 원형 큐를 만들어야할까, rear와 front를 지정해 count 변수를 만들어서 배열의 길이에 따라 count를 늘렸다 줄였다 해볼까 고민을 해보았다. 하지만 이전에 잔돈 계산하기 문제를 풀었던게 생각났고, 그때 나머지 기호(%)를 이용해 문제를 해결했던게 생각났다. 덕분에 문제를 해결할 수 있었다.

profile
디발자가 되고픈 이성효라고 합니다 :)

0개의 댓글