본문 바로가기
CodingTest

백준_11866번_요세푸스 문제 0_자바

by Lcoding 2023. 12. 18.
반응형

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

 

11866번: 요세푸스 문제 0

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)

www.acmicpc.net

 

 

요세푸스문제는 코테에서 자주 등장하는 문제이며, Queue를 이용하면 쉽게 풀어낼 수 있다.

출력의 경우 아래와 같이 바로바로 찍어낼 수도 있고, Stringbuilder를 사용해도 괜찮을 것 같다.


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

public class Main {


    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());

        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());

        Queue<Integer> q = new LinkedList<>();

        for (int i = 0; i < n; i++) {
            q.add(i+1);
        }

        System.out.print("<");
        int i =1;
        while (q.size()>1){
            int re = q.poll();
            if(i%m==0){
                System.out.print(re+", ");
            }else {
                q.add(re);
            }
            i++;
        }
       System.out.print(q.poll()+">");

    }
}

반응형

loading