728x90
반응형
https://www.acmicpc.net/problem/1158
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
32
33
34
35
36
37
38
39
40
41
42
43
44
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
Queue<Integer> queue = new LinkedList<>();
String token = br.readLine();
String[] tokens = token.split(" ");
int num = Integer.parseInt(tokens[0]);
int slice = Integer.parseInt(tokens[1]);
for (int i = 1; i <= num; i++) {
queue.add(i);
}
sb.append("<");
int i = 0;
while (!queue.isEmpty()) {
i++;
if (i == slice) {
if (queue.size() <= 1 && i == slice) {
sb.append(queue.poll());
} else {
sb.append(queue.poll()).append(", ");
}
i = 0;
} else {
queue.add(queue.poll());
}
}
sb.append(">");
System.out.println(sb.toString());
}
}
|
cs |
처음 쓴 코드
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
Queue<Integer> lqueue = new LinkedList<>();
Queue<Integer> rqueue = new LinkedList<>();
String token = br.readLine();
String[] tokens = token.split(" ");
int num = Integer.parseInt(tokens[0]);
int slice = Integer.parseInt(tokens[1]);
for (int i = 1; i <= num; i++) {
lqueue.add(i);
}
sb.append("<");
int i = 0;
while (!lqueue.isEmpty() || !rqueue.isEmpty()) {
while (!lqueue.isEmpty()) {
i++;
if (i == 3) {
sb.append(lqueue.poll()).append(", ");
i = 0;
} else {
rqueue.add(lqueue.poll());
}
}
while (!rqueue.isEmpty()) {
i++;
if (i == 3) {
sb.append(rqueue.poll()).append(", ");
i = 0;
} else {
rqueue.add(rqueue.poll());
}
}
}
sb.append(">");
System.out.println(sb.toString());
}
}
|
cs |
1406번 처럼 큐를 두게 만들어서 풀려고 했는데 위에 사진 처럼 맨 뒤에 쉼표랑 공백이 남아버려서 큐 2개 만드는 방법은 포기했다 (정말 하나 알려주면 하나만 쓸줄 안다 ㅋㅋㅋㅋㅋ)
원형큐 코드를 찾아보니
queue.add(queue.poll());
큐의 맨 위 원소를 꺼내서 다시 큐에 넣는 방법이 있었다..!
그림으로 나타내보자면 이렇다!
728x90
반응형
'알고리즘 > 문자열 처리, 기타 자료구조' 카테고리의 다른 글
[java 백준] 실버 3/ 1406번 에디터 (0) | 2021.09.01 |
---|---|
[java 백준] 실버 4/ 11656번 접미사 배열 (0) | 2021.08.28 |
[java 백준] 브론즈 3/ 10824번 네 수 (0) | 2021.08.27 |
[java 백준] 브론즈 1/ 11655번 ROT13 (0) | 2021.08.27 |
[java 백준]브론즈 2/10820번 문자열 분석 (0) | 2021.08.25 |
댓글