2164번: 카드(2)
https://www.acmicpc.net/problem/2164
# 코드
import java.io.*;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) throws IOException {
// 빠른 입출력을 위한 BufferedReader 와 BufferedWriter
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// N
long n = Long.parseLong(br.readLine());
// N장의 카드를 담을 LinkedList
LinkedList<Long> n_list = new LinkedList<>();
// 1~N 값을 리스트에 차례로 추가
for (long i = 0; i < n; i++) {
n_list.add(i + 1);
}
// 카드가 한 장 남을 때까지 반복
while (n_list.size() != 1) {
// 가장 위 카드 버리기
n_list.removeFirst();
// 가장 위 카드를 빼서 마지막으로 옮기기
n_list.addLast(n_list.removeFirst());
}
// 마지막 카드 출력
bw.write(String.valueOf(n_list.get(0)));
// Reader 버퍼 닫기
br.close();
// Writer 버퍼 비운 뒤 닫기
bw.flush();
bw.close();
}
}
- 바로 직전 1158 요세푸스 문제보다 난이도가 낮아 쉽게 풀 수 있었던 문제였다.
- 역시 삽입과 삭제가 빠른 LinkedList를 이용해 구현했다.
'코딩테스트 > 자바 문제풀이' 카테고리의 다른 글
[자료구조] 백준 2346 풍선 터뜨리기 (0) | 2024.07.16 |
---|---|
[자료구조] 백준 10866 덱 (0) | 2024.07.15 |
[자료구조] 백준 1158 요세푸스 문제 (0) | 2024.07.13 |
[자료구조] 백준 9012 괄호 (0) | 2024.07.12 |
[자료구조] 백준 10828 스택 (0) | 2024.07.11 |