📌 문제
https://www.acmicpc.net/problem/2161
📌 코드
package baekjoon;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Q2161 { // 카드 1
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Queue<Integer> queue = new LinkedList<>(); // 1
int testCase = scanner.nextInt();
for (int i = 1; i <= testCase; i++) {
queue.offer(i); // 2
}
StringBuilder sb = new StringBuilder(); // 3
while (queue.size() > 1) { // 4
sb.append(queue.poll()).append(" "); // 5
queue.offer(queue.poll()); // 6
}
System.out.println(sb.append(queue.poll())); // 7
}
}
📌 풀이
- Queue 유형 문제 (카드를 맨 처음에 넣은 거 제거해서 저장하고, 제거한 다음 카드를 맨뒤에 저장하기 위해)
- 주어진 testCase까지 숫자를 Queue에 저장
- 버린 카드를 담아 출력하기 위해 StringBuilder 활용
- Queue에 카드가 한 장이 될 때까지 반복
- 버린 카드는 StringBuilder에 저장
- 카드를 버렸으니 첫 번째 값을 Queue 맨뒤에 저장
- Queue에 남은 카드를 append로 붙여서 출력
'Algorithm' 카테고리의 다른 글
[Java] 백준 25556 : 포스택 (0) | 2023.05.08 |
---|---|
[Java] 유클리드 호제법 (Euclidean Algorithm) (0) | 2023.04.29 |
[Java] 백준 16466 : 콘서트 (0) | 2022.06.28 |
[Java] 백준 3028 : 창영마을 (0) | 2022.06.21 |
[Java] 백준 1032 : 명령 프롬프트 (0) | 2022.06.08 |