[백준] 1158. 요세푸스 문제(실버5)

ERror.ASER·2021년 2월 9일
0

백준

목록 보기
9/69
post-thumbnail

백준(실버5) - 1158. 요세푸스 문제(실버5)



풀이

큐를 이용하면 쉽게 풀 수 있다.
1. n만큼의 사람을 queue에 넣어준다.
2. queue에 있는 사람이 한명 남을 때까지 -> 출력때문에 isEmpty를 안썼다.
3. 앞에 있는 사람을 k-1번 빼주는 것을 반복해준다. (이때, 빼준 사람은 다시 queue에 넣어준다)
4. while문 안의 for문을 나와서 빼주는 사람이 k번째 사람이다!

package com.study.classAlgo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class BOJ1158 {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int n = Integer.parseInt(st.nextToken());
		int k = Integer.parseInt(st.nextToken());
		StringBuilder sb = new StringBuilder();
		
		Queue<Integer> queue = new LinkedList<>();
		for(int i=1; i<=n; i++) {
			queue.add(i);
		}
		sb.append("<");
		while(queue.size()-1 >0) {
			for(int i=0; i<k-1; i++) {
				int temp = queue.poll();
				queue.add(temp);
			}
			sb.append(queue.poll()+", ");				
		}
		sb.append(queue.poll());
		sb.append(">");
		System.out.println(sb);
	}
}
profile
지우의 블로그

0개의 댓글