• 문제 링크
12873번: 기념품
백준이는 BOJ 알고리즘 캠프 참가자 중 한 명에게 기념품을 주려고 한다. 하지만, 많은 참가자 중에서 어떤 사람을 뽑아서 기념품을 줘야하는지 고민이 되기 시작했다. 따라서, 백준이는 게임을
www.acmicpc.net
• 풀이 과정
각 단계 i의 세제곱 횟수만큼 Queue 에서 값을 순회시킨다면 시간 초과된다.
따라서 각 단계 i^3 - 1 에 현재 Queue 의 크기의 나머지를 구하면 해당 횟수에 기념품을 받는 사람은 동일하다.
이때 i^3 은 int 범위를 초과할 수 있으므로 long 으로 형변환해 순회 횟수를 구한다.
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
Queue<Integer> q = new LinkedList<>();
for (int i = 1; i <= n; i++)
q.offer(i);
for (int i = 1; i < n; i++, q.poll()) {
long num = ((long) i * i * i - 1) % q.size();
while (num-- > 0)
q.offer(q.poll());
}
bw.write(String.valueOf(q.poll()));
bw.flush();
}
}
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 14911 궁합 쌍 찾기 - Data Structure / Java (0) | 2023.04.29 |
---|---|
[백준] 9733 꿀벌 - Data Structure / Java (0) | 2023.04.28 |
[백준] 9575 행운의 수 - Data Structure / Java (0) | 2023.04.26 |
[백준] 16499 동일한 단어 그룹화하기 - Data Structure / Java (0) | 2023.04.25 |
[백준] 14426 접두사 찾기 - Data Structure / Java (0) | 2023.04.24 |
댓글