[백준_11866] 요세푸스 문제 0 - JAVA

jm_25·2021년 12월 13일
0

알고리즘

목록 보기
39/40
post-thumbnail

문제 출처

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


풀이

  • K의 배수일 때 Queue에서 poll()
  • K의 배수가 아닐 경우 Queue에서 poll() 후 다시 Queue에 add()

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        int N = Integer.parseInt(stringTokenizer.nextToken());
        int K = Integer.parseInt(stringTokenizer.nextToken());
        Queue<Integer> queue = new LinkedList<>();
        for (int i = 1; i <= N; i++) {
            queue.add(i);
        }
        List<Integer> answerList = new ArrayList<>();
        int count = 0;
        while (!queue.isEmpty()) {
            count++;
            if (count % K != 0) {
                int number = queue.poll();
                queue.add(number);
            } else {
                answerList.add(queue.poll());
            }
        }
        StringBuilder stringBuilder = new StringBuilder();
        for (int value : answerList) {
            if (stringBuilder.length() > 0) {
                stringBuilder.append(", ");
            }
            stringBuilder.append(value);
        }
        System.out.println("<" + stringBuilder + ">");

    }
}

채점 결과

profile
매일 매일 한 개씩

0개의 댓글