Queue
Queue๋ ์๋ฃ๊ตฌ์กฐ ์ค ํ๋๋ก, FIFO(First In First Out, ์ ์
์ ์ถ) ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๋ ๊ตฌ์กฐ๋ฅผ ๋ปํ๋ฉฐ, ๋ฐ์ดํฐ๊ฐ ์
๋ ฅ๋ ์๊ฐ ์์๋๋ก ์ฒ๋ฆฌํด์ผ ํ ํ์๊ฐ ์๋ ์ํฉ์ ์ฌ์ฉํ๋ค. ๋ํ์ ์ธ ์๋ก ๋๋น ์ฐ์ ํ์(BFS)์์ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
์์ธํธ์ค ์์ด
SSAFY๋ฅผ ์ค๋นํ๋ฉฐ ์คํ์นดํก๋ฐฉ์์ ์ด๋ฐ ์ ๋ฐ ์ ๋ณด๋ฅผ ๊ณต์ ํ๋ ์ค CT๋ฅผ ๋๋นํ๊ธฐ ์ํด ์์ธํธ์ค ์์ด์ ๊ณต๋ถํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค๋ ์ด์ผ๊ธฐ๋ฅผ ๋ค์ด ์ ํ๊ฒ ๋์๋ค.
ํด๋น ๋ฌธ์ ๋ N๋ช ์ ์ธ์์(๋ฐฐ์ด์ ๊ธธ์ด)์ ์์๋๋ก M ๋ฒ์งธ์ ์ ๊ฑฐํ ์ ์(์ถ๋ ฅ๋๋ ์ ์)๊ฐ ์ฃผ์ด์ง๋ค.
๋๋ ํด๋น ๋ฌธ์ ๋ฅผ Queue ์๋ฃ ๊ตฌ์กฐ๋ฅผ ์ด์ฉํด์ ํด๊ฒฐํ๋ค.
๋ฌธ์ ๋ ์๊ฐ๋ณด๋ค ๊ฐ๋จํ ํด๊ฒฐํ๊ณ , ์ ํํ ์ดํดํ๊ธฐ ์ํด์ ๊ทธ๋ฆผ๊ณผ ํ
์ด๋ธ์ ๋ง๋ค์ด ํ๋์ฉ ์๊ฐํด ๋ณด์๋ค.
์ฝ๋๋ก ํบ์๋ณด๊ธฐ
๋ง์ ์ฌ๋๋ค์ด ArrayList ํด๋์ค๋ฅผ ์ด์ฉํด ๋ ๊ฐ๋จํ๊ณ ๋น ๋ฅด๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋๋ก ํ๋๋ฐ, ๋๋ ์์ง ์๋ฃ๊ตฌ์กฐ์ ๋ํ ์ดํด๊ฐ ๋ง์ด ๋จ์ด์ ธ์ Queue๋ฅผ ์ด์ฉํด ํด๊ฒฐํ๊ณ ์ ํ๋ค.
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด 0 ๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ์ ์ธํ๊ณ , cnt
๋ณ์๋ฅผ ํ์ฉํด cnt
๋ณ์์ ๊ฐ์ ์ฆ๊ฐ ์์ผ ํด๋น ๋ณ์๊ฐ์ด M ๋ฒ์งธ๋ผ๋ฉด queue
๋ณ์์ ๊ฐ์ฅ ์์ ์๋ ๋ฐ์ดํฐ๋ฅผ poll()
ํ๊ณ , ๋ค์ ํด๋น ๋ฐ์ดํฐ๋ฅผ offer()
ํ๋ ํ์์ผ๋ก ๊ตฌํํ์๋ค.
package ์ฌ์ฑํ.์๊ณ ๋ฆฌ์ฆ_5์ฃผ์ฐจ.๋ฐฑ์ค;
import java.io.*;
import java.util.*;
public class ์์ธํธ์ค๋ฌธ์ _1158 {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
static StringBuffer sb = new StringBuffer();
static Queue<Integer> queue = new LinkedList<Integer>();
static int n, m;
public static void main(String[] args) throws Exception {
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
int arr[] = new int[n + 1];
for (int i = 1; i < arr.length; i++) {
arr[i] = i;
queue.offer(arr[i]);
}
String result = turn(arr, m);
bw.write(result.toString());
bw.flush();
bw.close();
}
public static String turn(int[] arr, int turn) {
int cnt = 1;
sb.append("<");
while (!queue.isEmpty()) {
if (cnt == turn) {
cnt = 1;
int save = queue.poll();
sb.append(save);
if (!queue.isEmpty()) {
sb.append(", ");
}
} else {
queue.offer(queue.poll());
cnt++;
}
}
sb.append(">");
return sb.toString();
}
}
์ฃผ์ ๋ฆฌ
๋ง์ ์๊ณ ๋ฆฌ์ฆ์ ์ ํด๋ณธ ๊ฒ์ ์๋์ง๋ง ์ง๊ธ๊น์ง ํ์ด ๋ณธ ๋ฌธ์ ์ค์์ ๋ด ์์ค๊ณผ ๋ฑ ๋ง๋ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ๋ค.
์์ง ์ฌ๋ฌ๋ชจ๋ก ๋ถ์กฑํ๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ์ง์ ์ง ์ฝ๋๊ฐ ์๋ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ๋ฉฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ๋๋ฐ, ์ด๋ฒ ๋ฌธ์ ๋ ์ค๋กฏ์ด ๋ ํผ์ ํด๊ฒฐํด์ ์กฐ๊ธ ๋ฟ๋ฏํ๋ค.
ํ์ง๋ง ์์ง ๊ฒช๊ณ ๊นจ์ผ ํ ๋ฒฝ๋ค์ด ๋ง์ด ์์ผ๋ ๋ ํํํ ๊ณต๋ถํด์ ์ค๋ ฅ์ ์์ ์ฌ๋ ค์ผ๊ฒ ๋ค!
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Cos Pro 1๊ธ | ๋๋ฅด์์์ฆ ์ (0) | 2020.12.10 |
---|---|
๋ฐฑ์ค 1322 | ๋นํธ ์ฐ์ฐ, X์ K (0) | 2020.11.25 |
๋ฐฑ์ค 10816 | ์ซ์ ์นด๋ 2 (0) | 2020.11.07 |
ํ์ | ์์ฐจ ํ์, ์ด์ง ํ์, ๋ถํ ์ฐพ๊ธฐ (0) | 2020.11.07 |
๋ฐฑ์ค 2667 | DFS, ๋จ์ง ๋ฒํธ ๋ถ์ด๊ธฐ (0) | 2020.11.02 |