본문 바로가기
코딩테스트

[Python] 백준 12873번 - '기념품' 풀이

by CuckooBird 2023. 1. 18.

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

 

12873번: 기념품

백준이는 BOJ 알고리즘 캠프 참가자 중 한 명에게 기념품을 주려고 한다. 하지만, 많은 참가자 중에서 어떤 사람을 뽑아서 기념품을 줘야하는지 고민이 되기 시작했다. 따라서, 백준이는 게임을

www.acmicpc.net


코드

import sys
N = int(sys.stdin.readline().rstrip())
join_li = [i for i in range(1, N+1)]
t = 0
num = 0
while len(join_li) > 1:
    t += 1
    num += t**3 -1
    num = num % len(join_li)
    join_li.pop(num)
print(join_li[0])

num은 pop할 인덱스 값을 저장합니다.

t를 3제곱한 값에 -1을 한 것을 계속해서 더해주는 것도 그 이유입니다.

남은 리스트의 길이를 num에 나눈 나머지를 통하여 현재 백준이가 어디에 서있는지를 알려줍니다.


후기

큐를 이용해서 푸는 문제라는데 큐와 데크에 대한 이해도가 낮아서 pop과 num을 이용한 풀이를 했습니다. 기회가 된다면 다음에 큐에 대하여 포스팅을 해보겠습니다.