일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- BOJ
- 탐색알고리즘
- BFS
- SQL
- JavaScript
- framework
- 알고리즘
- BAEKJOON
- 단위테스트
- 연습문제
- Java
- springboot
- 우아한형제들
- 웹프로그래밍
- 프레임워크
- Backtracking
- Vue
- Database
- codeground
- 백준
- react
- DFS
- Vue.js
- JPA
- Spring
- TypeScript
- 우아한테크캠프
- mobx
- Algorithm
- 데이터베이스
- Today
- Total
설모의 기록
[백준 11866] 조세퍼스 문제 본문
이 문제는 입력된 수만큼 사람이 원으로 앉고, 입력된 값만큼 원을 돌며 사람을 제거하는 문제입니다.
푸는 방식
- 큐에 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 |