반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

짧은코딩

1158 요세푸스 문제 본문

코딩 테스트(Python)/백준, 프로그래머스

1158 요세푸스 문제

5_hyun 2022. 2. 19. 23:26
반응형

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

 

1158번: 요세푸스 문제

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

www.acmicpc.net

 

내 풀이(맞음)

n, k = map(int, input().split())
ary = []
rst = []
for i in range(n):
    ary.append(i+1)
t = k -1
while(True):
    if(len(rst) == n):
        break
    if t < len(ary):
        True        
    else:
        t %= len(ary)
    a = ary[t]
    del ary[t]
    rst.append(a)
    t += k-1
print("<", end = '')
for i in rst:
    if i == rst[-1]:
        print(i, end = '')
    else:
        print(i, end = ', ')
print('>')

t는 k보다 1작아야 리스트에서 제대로 된 위치를 찾을 수 있다. 그리고 rst가 n만큼 있을 때 까지 반복문을 돌린다. 그리고 t가 len(ary)보다 작으면 냅두고 크면 len(ary)로 나눈 나머지를 t로 한다. 그리고 k번째 값을 삭제한다. 그리고나서 t에 k-1 만큼 더하는 이유는 del을 했기때문에 이미 -1을 한거나 다름없기 때문이다.

반응형

'코딩 테스트(Python) > 백준, 프로그래머스' 카테고리의 다른 글

1966 프린터 큐  (0) 2022.02.23
10816 숫자 카드 2  (0) 2022.02.22
11279 최대 힙  (0) 2022.02.14
4949 균형잡힌 세상  (0) 2022.02.12
1927 최소 힙  (0) 2022.02.12
Comments