Skip to content

Commit 1dd27f1

Browse files
committed
Add: algorithms of baekjoon
1 parent ebd33a9 commit 1dd27f1

File tree

3 files changed

+125
-0
lines changed

3 files changed

+125
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package io.github.imsejin.study.baekjoon.silver;
2+
3+
import io.github.imsejin.study.meta.Problem;
4+
import io.github.imsejin.study.meta.Tag;
5+
6+
import java.io.BufferedReader;
7+
import java.io.InputStreamReader;
8+
import java.util.ArrayDeque;
9+
import java.util.Objects;
10+
import java.util.Queue;
11+
12+
@Problem(tags = {
13+
Tag.DATA_STRUCTURE,
14+
})
15+
public class P2164 {
16+
17+
public static void main(String[] args) throws Exception {
18+
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
19+
int count = Integer.parseInt(reader.readLine());
20+
int answer = solve(count);
21+
System.out.println(answer);
22+
}
23+
}
24+
25+
static int solve(int count) {
26+
Queue<Integer> queue = new ArrayDeque<>();
27+
for (int i = 1; i <= count; i++) {
28+
queue.offer(i);
29+
}
30+
31+
while (queue.size() > 1) {
32+
// 우선, 제일 위에 있는 카드를 바닥에 버린다.
33+
queue.poll();
34+
35+
// 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다.
36+
Integer number = queue.poll();
37+
queue.offer(number);
38+
}
39+
40+
return Objects.requireNonNull(queue.peek());
41+
}
42+
43+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package io.github.imsejin.study.baekjoon.silver;
2+
3+
import io.github.imsejin.study.meta.Problem;
4+
import io.github.imsejin.study.meta.Tag;
5+
6+
import java.io.BufferedReader;
7+
import java.io.InputStreamReader;
8+
import java.util.ArrayDeque;
9+
import java.util.Deque;
10+
import java.util.NoSuchElementException;
11+
12+
@Problem(tags = {
13+
Tag.DATA_STRUCTURE,
14+
})
15+
public class P9012 {
16+
17+
public static void main(String[] args) throws Exception {
18+
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
19+
reader.readLine();
20+
21+
StringBuilder sb = new StringBuilder();
22+
while (true) {
23+
String ps = reader.readLine();
24+
if (ps == null || ps.isEmpty()) break;
25+
26+
String answer = solve(ps) ? "YES" : "NO";
27+
sb.append(answer).append('\n');
28+
}
29+
30+
System.out.println(sb);
31+
}
32+
}
33+
34+
static boolean solve(String ps) {
35+
Deque<Character> stack = new ArrayDeque<>();
36+
37+
try {
38+
int length = ps.length();
39+
for (int i = 0; i < length; i++) {
40+
char c = ps.charAt(i);
41+
42+
switch (c) {
43+
case '(' -> stack.push(c);
44+
case ')' -> stack.pop();
45+
default -> throw new AssertionError();
46+
}
47+
}
48+
} catch (NoSuchElementException ignored) {
49+
return false;
50+
}
51+
52+
return stack.isEmpty();
53+
}
54+
55+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package io.github.imsejin.study.baekjoon.silver
2+
3+
import spock.lang.Specification
4+
5+
class P9012Spec extends Specification {
6+
7+
def "test"() {
8+
when:
9+
def actual = P9012.solve(parenthesisString)
10+
11+
then:
12+
actual == expected
13+
14+
where:
15+
parenthesisString | expected
16+
"(())())" | false
17+
"(((()())()" | false
18+
"((()()(()))(((())))()" | false
19+
"(()((())()(" | false
20+
"((" | false
21+
"))" | false
22+
"())(()" | false
23+
"(()())((()))" | true
24+
"()()()()(()()())()" | true
25+
}
26+
27+
}

0 commit comments

Comments
 (0)