import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Queue<Integer> que = new LinkedList<>();
for (int i = 0; i < n; i++) {
que.add(i + 1);
}
while (que.size() > 1) {
que.poll();
int temp = que.poll();
que.offer(temp);
}
System.out.println(que.poll());
}
}
[해설]
큐를 이용하여 푸는게 좋은 문제로 입력 값을 받고 입력값까지의 숫자를 큐에 넣는다.
큐의 사이즈가 1보다 클 때까지만 (마지막 하나가 남을 때까지) while 문을 수행한다.
맨 처음에 위치한 숫자는 poll (큐의 값을 뺌) -> 두 번째에 위치한 숫자의 poll 한 값을 temp에 넣고 offer (큐에 값을 넣음) 메서드 실행해 주면 된다.
'알고리즘' 카테고리의 다른 글
[Queue] 큐의 .add()와 .offer() && .remove()와 .poll() 의 차이 (0) | 2025.01.07 |
---|---|
백준 - 1874 (스택 수열) (0) | 2025.01.06 |
자료 구조 - 스택과 큐 (0) | 2025.01.05 |
백준 - 1940(주몽) (1) | 2024.12.15 |
백준 - 2018 (수들의 합 5) (0) | 2024.12.11 |