문제 해설
맨 위의 카드를 제거하고, 새로운 맨 위의 카드를 맨 아래로 삽입하면 됩니다. 카드의 제거가 위쪽, 카드의 삽입이 아래쪽에서 이뤄지므로 큐 자료구조를 활용할 수 있습니다.
문제 풀이 계획
필요 변수
변수명 | 타입 | 초기값 | 설명 |
q | Queue<Integer> | 큐 | |
N | int | 카드 갯수 |
해결 로직
- N을 입력 받는다.
- queue에 차례대로 1부터 N까지 삽입한다.
- queue 사이즈가 1이 될 때 까지 다음을 반복한다.
- 맨 위의 카드를 제거한다.
- 맨 위의 카드를 제거하고 다시 맨 아래에 삽입한다.
- 마지막으로 남은 숫자를 출력한다.
풀이 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static Queue<Integer> q;
public static int N;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine()); // 1. N을 입력 받는다.
q = new LinkedList<Integer>();
for(int i=1; i<=N; i++) { // 2. 큐에 1부터 N까지 삽입한다.
q.add(i);
}
while(q.size() != 1) { // 3. 큐에 원소가 하나만 남을 때까지 아래를 반복한다.
q.poll();
q.add(q.poll());
}
System.out.println(q.peek()); // 4. 마지막 남은 원소를 출력한다.
}
}
'Problem Solving' 카테고리의 다른 글
[BOJ] 백준 1206번 DFS와 BFS - 인접 리스트 JAVA 풀이 (0) | 2024.06.04 |
---|---|
[BOJ] 백준 10799번 쇠막대기 - JAVA 자바 풀이 (0) | 2024.06.01 |
백준 10845 큐 - Java 자바 문제 풀이 (1) | 2024.02.08 |
백준 2493 탑 - Java 자바 문제 풀이 (0) | 2024.02.06 |
백준 1874 스택 수열 - Java 자바 문제 풀이 (0) | 2024.02.06 |