728x90
문제
https://www.acmicpc.net/problem/2164
접근 방법
1. Queue를 활용하여 1~N 까지 카드를 넣어줍니다.
2. 카드에서 한장을 버리고, 남은 카드가 한장이라면 그것이 답이고, 2장 이상이라면 앞에있는 카드를 뒤로 옮겨줍니다.
3. 만약 N이 한장일 경우 Queue는 무한루프에 빠지게 되므로 N==1일때 예외 처리를 해줍니다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
private static BufferedReader br;
private static int N;
private static Queue<Integer> que = new LinkedList<>();
//입력
public static void input() throws Exception {
br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
for(int i = 1 ; i <= N ; i++){
que.add(i);
}
}
//실행
public static void process() {
if(que.size()==1){
System.out.println(que.poll());
return;
}
while(!que.isEmpty()){
que.poll();
if(que.size()==1){
System.out.println(que.poll());
break;
}
que.add(que.poll());
}
}
public static void main(String[] args) throws Exception {
input();
process();
}
}
'코딩테스트 > 백준' 카테고리의 다른 글
[Java] 백준 14476번 : 최대공약수 하나 빼기 (0) | 2024.04.29 |
---|---|
[Java] 백준 2231번 : 분해합 (0) | 2024.04.29 |
[Java] 백준 2108번 : 통계학 (0) | 2024.04.29 |
[Java] 백준 1978번 : 소수 찾기 (0) | 2024.04.26 |
[Java] 백준 1966번 : 프린터 큐 (0) | 2024.04.26 |