본문 바로가기

코딩테스트/백준

[백준-자바] 2164번 카드2 / 2022.07.16

 

https://www.acmicpc.net/problem/2164

 

2164번: 카드2

N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가

www.acmicpc.net

 

 

 

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //StringBuilder sb = new StringBuilder();
        int N = Integer.parseInt(br.readLine());

        Queue<Integer> queue = new LinkedList<>();
        for(int i=1; i<=N; i++){
            queue.offer(i);
        }
        // 1. 그냥 버리기 2. 맨 앞 숫자를 맨 뒤에 넣기
        // 위 두가지를 반복하기 위한 index 변수
        int index = 0;
        while(queue.size()!=1){
            index++;
            // index가 홀수라면 1번
            if(index%2==1){
                queue.poll(); continue;
            }
            // 아니라면 2번
            queue.offer(queue.poll());
        }
        // 마지막 남은 숫자를 출력
        System.out.println(queue.poll());
    }
}