티스토리 뷰

728x90
반응형

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)]
arr2=[]
i=0
while arr:
    idx = ((i+k-1)%len(arr))
    pop_num=arr.pop(idx)
    arr2.append(pop_num)
    i=idx
print('<',end='')
for i in range(n):
    if i!=n-1:
        print(arr2[i],end=', ')
    else:
        print(arr2[i],end='>')

숫자를 중간에서 빼와야하는데 덱은 양 끝에서만 수를 빼낼 수 있어서 그냥 리스트를 사용해서 풀었다.

 

다른 사람 풀이

N, K = map(int, input().split())
l = list(range(1, N+1))
p = list()
i = 0
while l:
    i = (i+K-1) % len(l)
    p.append(str(l.pop(i)))

print('<'+', '.join(p)+'>')

 

출력 부분 빼고는 동일하다.  출력을 저렇게 간단하게 할 수 있구만..ㅎ 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함