설모의 기록

[백준 11866] 조세퍼스 문제 본문

알고리즘

[백준 11866] 조세퍼스 문제

HA_Kwon 2017. 12. 20. 15:53

이 문제는 입력된 수만큼 사람이 원으로 앉고, 입력된 값만큼 원을 돌며 사람을 제거하는 문제입니다.


푸는 방식

- 큐에 N 까지의 숫자를 모두 넣습니다.

- (M - 1) 만큼 큐에서 숫자를 빼 마지막에 넣습니다.

- 큐에서 한개를 pop 해 출력합니다.


import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main { static Queue<Integer> q = new LinkedList<>(); static int N, M; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); M = Integer.parseInt(st.nextToken()); for (int i = 1; i <= N; i++) { q.offer(i); } bw.write("<" + print() + ">"); bw.flush(); } public static String print() { String str = ""; while (!q.isEmpty()) { for (int i = 0; i < M - 1; i++) { int num = q.poll(); q.offer(num); } str += q.poll() + ", "; } return str.substring(0, str.length() - 2); } }


'알고리즘' 카테고리의 다른 글

A* 알고리즘  (2) 2018.03.15
[백준 1003] 피보나치 함수  (0) 2018.01.01
[백준 1260] DFS 와 BFS  (0) 2017.12.20
[백준 1966] 프린터 큐  (0) 2017.12.20
[백준 1753] 최단경로  (0) 2017.12.14
Comments