728x90
코드 힌트
- 입출력 최적화:
- 대용량의 데이터를 빠르게 처리하기 위해 BufferedReader와 BufferedWriter를 사용하여 입력과 출력을 처리합니다. 이 방법은 효율적인 입출력 처리를 가능하게 합니다.
- 큐 초기화:
- 1부터 n까지의 숫자를 큐에 넣습니다. 큐는 순서대로 데이터를 처리하는 구조로, 여기서는 카드 게임의 순서를 모방합니다.
- 카드 제거와 이동:
- 큐의 크기가 1이 될 때까지 가장 앞의 카드를 제거한 후, 그 다음 카드를 다시 큐의 뒤에 추가하는 작업을 반복합니다. 이 과정은 마치 카드를 한 장씩 버리고 다음 카드를 다시 큐에 넣는 것과 같습니다.
- 마지막 카드 출력:
- 마지막으로 남은 카드가 최종 결과입니다. 이 값을 출력합니다.
정답은 더보기 클릭
더보기
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
// BufferedReader와 BufferedWriter를 사용해 입출력 처리
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// n을 입력받아 정수로 변환
int n = Integer.parseInt(br.readLine());
// 큐를 사용하여 카드 순서를 관리
Queue<Integer> q = new LinkedList<>();
// 1부터 n까지의 숫자를 큐에 추가
for (int i = 1; i <= n; i++) {
q.add(i);
}
// 큐에 카드가 한 장 남을 때까지 반복
while(q.size() > 1) {
q.poll(); // 가장 앞의 카드를 버림
q.add(q.poll()); // 그 다음 카드를 큐의 뒤로 이동
}
// 마지막 남은 카드를 출력
bw.write(q.poll() + "\n");
// BufferedWriter의 남은 데이터를 출력
bw.flush();
bw.close();
}
}
728x90
'백준' 카테고리의 다른 글
[백준] 분해합 (2231번) (0) | 2024.08.27 |
---|---|
[백준] 최소공배수 (1934번) (0) | 2024.08.26 |
[백준] 단어 정렬 (1181번) (0) | 2024.08.17 |
[백준] 나이순 정렬 (10814번) (0) | 2024.08.17 |
[백준] 터렛 (1002번) (0) | 2024.08.16 |