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을 이용한 풀이를 했습니다. 기회가 된다면 다음에 큐에 대하여 포스팅을 해보겠습니다.
'코딩테스트' 카테고리의 다른 글
[Python] 백준 3100번 - '국기 인식' 풀이 (3) | 2023.01.19 |
---|---|
[Python] 백준 14936번 - '엘레베이터 장난' (2) | 2023.01.19 |
[Python] 백준 1049번 - '기타줄' 풀이 (2) | 2023.01.18 |
[Python] 백준 3085번 - '사탕 게임' 풀이 (1) | 2023.01.17 |
[Python] 백준 10546번 - '배부른 마라토너' 풀이 + 해시(hash) (1) | 2023.01.17 |