반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
11-07 11:40
관리 메뉴

ImJay

[BOJ/Java] 2164. 카드 2 본문

알고리즘/BOJ - Java

[BOJ/Java] 2164. 카드 2

ImJay 2024. 2. 4. 17:14
반응형

[BOJ/Java] 2164. 카드 2

 

2164번: 카드2

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

www.acmicpc.net


풀이

package edu.ssafy.im.BOJ.Silver.S4.No2164;

import java.io.*;
import java.util.ArrayDeque;
import java.util.Queue;

public class Main {
    int n; // 카드의 개수를 저장할 변수

    public static void main(String[] args) throws IOException {
        new Main().io();
    }

    private void io() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringBuilder sb = new StringBuilder();

        n = Integer.parseInt(br.readLine()); // 카드의 개수 입력 받음

        int ans = sol(); // 마지막에 남는 카드를 구하는 메서드 호출

        sb.append(ans); // 결과를 StringBuilder에 추가

        bw.write(sb.toString()); // 결과 출력
        bw.flush();
        bw.close();
    }

    private int sol() {
        Queue<Integer> queue = new ArrayDeque<>(); // 카드를 담을 큐 생성

        // 카드 번호를 큐에 넣음
        for (int i = 1; i <= n; i++) {
            queue.offer(i);
        }

        // 카드가 한 장 남을 때까지 반복
        while(queue.size() != 1) {
            queue.poll(); // 제일 위에 있는 카드를 버림
            queue.offer(queue.poll()); // 제일 위에 있는 카드를 제일 아래에 옮김
        }

        return queue.poll(); // 마지막에 남은 카드 번호 반환
    }
}

 

반응형

'알고리즘 > BOJ - Java' 카테고리의 다른 글

[BOJ/Java] 1194. 달이 차오른다, 가자.  (1) 2024.02.05
[BOJ/Java] 16987. 계란으로 계란치기  (0) 2024.02.04
[BOJ/Java] 6987. 월드컵  (0) 2024.02.04
[BOJ/Java] 2493. 탑  (0) 2024.02.04
[BOJ/Java] 16943. 숫자 재배치  (0) 2024.02.04
Comments