백준 Siver4 1158 - 요세푸스 문제

JH·2022년 10월 4일
0

백준 알고리즘

목록 보기
21/29
post-thumbnail

문제

입력

출력

예제

idea

정리

  1. 차례대로 큐에 집어넣는다.
  2. K-1까지의 수를 뺀 후 맨 뒤로 다시 집어 넣는다
  3. K번째의 수를 출력에 저장 후 제거한다.
  4. 숫자가 모두 없어질 때 까지 반복

Code

import java.util.*;
import java.io.*;

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());
		StringBuilder sb = new StringBuilder();
		int N = Integer.parseInt(st.nextToken());
		int K = Integer.parseInt(st.nextToken());

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

		for (int i = 1; i <= N; i++)
			que.offer(i);
		sb.append("<");
		while (que.size() != 1) {
			for (int i = 1; i <= K - 1; i++) {
				int x = que.peek();
				que.poll();
				que.offer(x);
			}
			int x = que.peek();
			que.poll();
			sb.append(x).append(", ");
		}
		sb.append(que.peek()).append(">");
		System.out.println(sb);
	}
}

결과

0개의 댓글