11866 요세푸스 문제 0 (JAVA)

Fekim·2022년 3월 7일
0

ps

목록 보기
37/48
  • k번째 사람을 제거하기 위해 k-1번 동안 앞사람을 뒤로 보내는 원리의 문제
  • 맨 앞의 원소가 첫번째로 나오고, 삽입할땐 맨 뒤에 삽입되는 특성을 갖는 큐를 이용하여 해결한다.
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

/* 11866 요세푸스 문제 0 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList<Integer> list = new ArrayList<>();
        Queue<Integer> q = new LinkedList<>();

        int n = sc.nextInt();
        int target = sc.nextInt();

        for(int i=1; i<=n; ++i)
            q.offer(i);

        while(!q.isEmpty()){
            for(int i=0; i<target-1; ++i)
                q.offer(q.poll());
            list.add(q.poll());
        }

        System.out.print('<');
        for(int i=0; i<list.size()-1; ++i)
            System.out.print(list.get(i)+", ");
        System.out.print(list.get(list.size()-1));
        System.out.print('>');
    }
}
profile
★Bugless 2024★

0개의 댓글