๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/์ž๋ฃŒ๊ตฌ์กฐ

[๋ฐฑ์ค€]1158๋ฒˆ ์š”์„ธํ‘ธ์Šค๋ฌธ์ œ

์ ์ด 2021. 8. 10. 13:32
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

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

 

1158๋ฒˆ: ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ

์ฒซ์งธ ์ค„์— N๊ณผ K๊ฐ€ ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ K ≤ N ≤ 5,000)

www.acmicpc.net


์ฝ”๋“œ(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));
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		
		int n = Integer.parseInt(st.nextToken());
		int k = Integer.parseInt(st.nextToken());
		
		Queue<Integer> queue = new ArrayDeque<>();
		
		for(int i =1 ; i <= n ; i++) {
			queue.offer(i);
		}
		int cnt = 1;
		int idx = 0;
		int[] josephus = new int[n]; 
		while(!queue.isEmpty()) {
			if(cnt++%k == 0) {
				josephus[idx++] = queue.poll();
			}
			else {
				queue.offer(queue.poll());
			}
		}
		System.out.println(Arrays.toString(josephus).replace("[", "<").replace("]", ">"));
	}

}

ํ’€์ด

์›ํ˜•๋ชจ์–‘์œผ๋กœ ์•‰์•„ ์žˆ๋‹ค๋Š” ๊ฒƒ๋•Œ๋ฌธ์— ์ฒ˜์Œ์—๋Š” LinkedList๋ฅผ ์ƒ๊ฐํ–ˆ์œผ๋‚˜, ์ด๋ฒˆ๋ฌธ์ œ๋Š” Queue๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ!

 

์šฐ์„  ํ์— 1~n๊นŒ์ง€์˜ ๊ฐ’์„ ๋„ฃ์–ด์ค€๋‹ค.

๊ทธ ํ›„, ํ๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€(์‚ฌ๋žŒ์ด ๋‚จ์ง€ ์•Š์„ ๋•Œ ๊นŒ์ง€) while๋ฌธ์„ ๋Œ๋ฆฌ๋ฉฐ 

cnt%3 == 0 ์ด๋ฉด poll๋กœ ํ์—์„œ ๊ฐ’์„ ๋นผ๊ณ  ๋ฐ”๋กœ josephus๋ฐฐ์—ด์— ๋„ฃ๋Š”๋‹ค.

๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด, pollํ•œ ๊ฐ’์„ ๋‹ค์‹œ offerํ•˜์—ฌ ์›ํ˜• ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด ์ค€๋‹ค.

 

์ถœ๋ ฅ์€ Arrays์˜ toString ์ถœ๋ ฅ์—์„œ [] ๋ชจ์–‘๋งŒ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋˜๋ฏ€๋กœ ๊ทธ๋ƒฅ System.out.println์œผ๋กœ ๋ฐ”๋กœ ์ถœ๋ ฅ ํ•ด์ฃผ์—ˆ๋‹ค. 

๋ฐ˜์‘ํ˜•