BOJ_2164_카드2_JAVA
문제 : 카드2
링크 : BOJ_2164_카드2
접근 방식
큐를 통해서 단방향 순환을 시켜주면 되는 문제이다.
fornt를 먼저 poll 시켜주는 것이 1번, 그 후의 front poll하여 다시 같은 Queue에 offer 해주는 과정을 queue의 size가 1이 될 때까지 반복하면 된다.
풀이 방법
-
Queue를 선언하여 LinkedList 객체를 생성한다.
-
1~N까지 Queue에 offer 해준다.
-
Queue size가 1이 될 때까지 첫 번째 인자 poll, 그 후 다음 인자 poll하여 다시 offer. 이 과정을 반복한다.
-
반복문을 마친 후 Queue에 남아있는 값을 poll하여 출력해준다.
소스 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
public class BOJ_2164_카드2 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(in.readLine());
Queue<Integer> queue = new LinkedList<>();
for(int i=1;i<=N;i++) {
queue.offer(i);
}
while(queue.size() != 1) {
queue.poll();
int num = queue.poll();
queue.offer(num);
}
System.out.println(queue.poll());
}
}