본문 바로가기

[BOJ] - JAVA

[백준] 1158 : 요세푸스 문제 JAVA 풀이

 

 

 

import java.io.*;
import java.util.*;
public class Main {

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		Queue<Integer> queue = new LinkedList<>();
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		int N = Integer.parseInt(st.nextToken());
		int K = Integer.parseInt(st.nextToken());
		
        // 1부터 N까지의 숫자를 큐에 넣음
		for(int i=1;i<=N;i++) {
			queue.add(i);
		}
		
		StringBuilder sb = new StringBuilder();
		sb.append("<");
		
        // 큐에 숫자가 하나만 남을 때까지 반복
		while(queue.size()>1) {
			// K번째 수 이전의 숫자는 뽑은 뒤에 다시 큐에 추가
			for(int i=0;i<K-1;i++) {
				int tmp = queue.poll();
				queue.add(tmp);
			}
            // K번째 수를 스트링빌더에 추가함
			sb.append(queue.poll()).append(", ");
			
		}
        // 큐에 남은 마지막 숫자를 스트링빌더에 추가
		sb.append(queue.poll()).append(">");
		System.out.println(sb);
	}

}