File tree Expand file tree Collapse file tree 3 files changed +125
-0
lines changed
main/java/io/github/imsejin/study/baekjoon/silver
test/groovy/io/github/imsejin/study/baekjoon/silver Expand file tree Collapse file tree 3 files changed +125
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments