알고리즘

백준 2164번 카드2 (JAVA)

박카스마시며코딩 2024. 1. 13. 19:49

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

 

2164번: 카드2

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

www.acmicpc.net

 

저는 자료구조에서 큐를 통해 풀었습니다.

큐를 통해 맨 앞에 것을 꺼내고, 또 맨 앞에 것을 꺼내어 맨 뒤에 넣는 것을 반복하여 최후의 한 장이 무엇인지 찾아 문제를 해결하였습니다.

 

package BOJ.dataStructure;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class BOJ_2164 {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());
        Queue<Integer> q = new LinkedList<>();
        for(int i = 1 ; i <= n ; i++){
            q.offer(i);
        }
        int[] result = new int[n];
        int index = 0;
        while(!q.isEmpty()){
            for(int i = 0 ; i < k-1 ; i++){
                q.offer(q.poll());
            }
            result[index++] = q.poll();
        }
        print(result,n);
    }

    private static void print(int[] result, int n) {
        StringBuilder sb = new StringBuilder();
        sb.append("<");
        for(int i = 0 ; i < n ; i++){
            sb.append(result[i]+", ");
        }
        sb.setLength(sb.length()-2);
        sb.append(">");
        System.out.println(sb.toString());
    }
}

'알고리즘' 카테고리의 다른 글

백준 2217번 로프 (JAVA)  (0) 2024.01.15
백준 1758번 알바생 강호 (JAVA)  (1) 2024.01.14
백준 6497번 전력난 (JAVA)  (0) 2024.01.12
백준 16398번 행성 연결 (JAVA)  (1) 2024.01.11
백준 2606번 바이러스 (JAVA)  (1) 2024.01.10