[๋ฐฑ์ค]1158๋ฒ ์์ธํธ์ค๋ฌธ์
๋ฌธ์
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์ผ๋ก ๋ฐ๋ก ์ถ๋ ฅ ํด์ฃผ์๋ค.