백준1158. 요세푸스 문제

김태훈·2024년 1월 17일
0

알고리즘

목록 보기
5/7

백준1158. 요세푸스 문제

순환 큐 문제입니다.
K-1번째까지는 다시 큐의 마지막으로 보내고 K번째를 제거하는 방식으로 해결했습니다.

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

public class Main {
	
	public static void main(String[] args) throws IOException {
		Scanner sc = new Scanner(System.in);
		StringBuilder sb = new StringBuilder();

		int N = sc.nextInt();
		int K = sc.nextInt();

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

		// 큐에 값 넣기
		for(int i = 1; i <= N; i++){
			q.add(i);
		}

		sb.append("<");

		while(!q.isEmpty()){
			//K의 배수가 아닌 값은 뽑고 다시 넣기
			for (int i = 1; i <= K; i++) {
				if (i == K) {
					if (q.size() == 1) { // 마지막 인원은 쉼표를 제외하고 넣기
						sb.append(q.remove());
					} else {
						sb.append(q.remove() + ", ");
					}
				} else {
					q.add(q.remove());
				}
			}
		}

		sb.append(">");
		System.out.println(sb);
	}

}

0개의 댓글

관련 채용 정보