본문 바로가기

ALGORITHM

백준 11866 요세푸스 문제 0 (Java)

1. 문제 링크

 

11866번: 요세푸스 문제 0

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

www.acmicpc.net

 

2. 문제 및 입출력예제

3. 문제 풀이

원형으로 앉아있는 사람 중 K번째 사람을 계속 제거해서 전부 제거하면 된다.

큐를 활용해서 구현하면 간단하게 할 수 있다.

K번째가 되기 전의 정수는 큐에서 빼서 바로 다시 큐에 넣고, K번째 사람은 빼서 출력하면 된다.

 

4. 코드

import java.io.IOException;
import java.util.ArrayDeque;
import java.util.Queue;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws IOException {
		StringBuilder sb = new StringBuilder();
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		int K = sc.nextInt();
		Queue<Integer> queue = new ArrayDeque<Integer>();
		for(int i=1;i<N+1;i++) {
			queue.offer(i);
		}
		sb.append("<");
		while(!queue.isEmpty()) {
			for(int i=0;i<K-1;i++) {
				queue.offer(queue.poll());
			}
			if(queue.size() == 1) {
				sb.append(queue.poll()+">");
			}
			else{
				sb.append(queue.poll()+", ");
			}
		}
		
		System.out.println(sb);
	}	
}

 

'ALGORITHM' 카테고리의 다른 글

백준 11057 오르막 수 (Java)  (0) 2023.03.09
백준 10431 줄세우기 (Java)  (0) 2023.03.08
백준 21921 블로그 (Java)  (0) 2023.03.06
백준 1003 피보나치 함수 (Java)  (0) 2023.03.05
백준 1074 Z (Java)  (0) 2023.03.04