[알고리즘]/알고리즘

[알고리즘] 백준 1158번 : 요세푸스 문제 (실버4)

쿠릉쿠릉 쾅쾅 2022. 4. 28. 05:14
728x90

 

문제

https://www.acmicpc.net/problem/1158

 

📌 풀이

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;

class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		StringBuilder sb = new StringBuilder();
		
		int N = Integer.parseInt(st.nextToken());
		int K = Integer.parseInt(st.nextToken());
		
		Deque<Integer> dq = new ArrayDeque<>();
		
		for(int i=0; i<N; i++) {
			dq.offerLast(i+1);
		}
		
		sb.append("<");
		
		while(dq.size()!=1) {
        
            // dq의 앞의 (k-1)개는 모두 dq의 마지막 요소로 넣기.
			for(int i=1; i<K; i++) {  
				dq.offerLast(dq.pollFirst());
			}
            // k번째 수는 출력 
			sb.append(dq.pollFirst())
				.append(", ");
		}
		
		sb.append(dq.pollFirst()).append(">");
		bw.write(sb.toString());
		bw.close();
	}
}

 

 

728x90