요세푸스 문제 0

곽지욱·2024년 3월 28일

BOJ

목록 보기
55/69

백준 11866번 : 요세푸스 문제0

알고리즘

  • 1부터 N 까지 나열 된 수에서 K번째 수 마다 차례대로 뽑아 낸 수열의 모음을 출력하는 것

  • 1부터 n 까지 나열 된 수가 있다

{1,2,3,4,5,6,7} -> {1,2,3,4,5,6,7} = 3출력

  • 그 다음 3의 위치에서 K번째 (3) 수인 6을 출력 .. 이런식으로 N번 반복하는 것

  • 큐로 이용하는 가장 보편적인 방법은 K-1번 만큼 앞의 수들을 꺼내서 맨 뒤로 넣고, K번째 수를 출력하면 된다.


package Queue;

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Yoseputh {
    public static void main(String[] args) {


        Scanner sc = new Scanner(System.in);

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

        int N = sc.nextInt();

        int K = sc.nextInt();

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

        StringBuilder sb = new StringBuilder();
        sb.append('<');

        while(q.size() > 1){
            for (int i=0; i < K-1; i++){
                int val = q.poll();
                q.offer(val);
            }
            sb.append(q.poll()).append(", ");

        }
        sb.append(q.poll()).append('>');
        System.out.println(sb);



    }
}

0개의 댓글