반응형
스택을 이용하여 푸는문제 (와 )로만 구성되어있으며 균형잡힌 올바른 괄호식인지 구분하는 문제이다.
() YES
()(()) YES
()(())() YES
)() NO
()) NO
()((())))) NO
()(()))((0 NO
이처럼 ()가 균형있게 들어가 있어야 한다.
Stack에 (경우 push
)경우 pop
스택이 비어있는데 )가 들어가는 경우 균형이 잡히지 않기 때문에 바로 NO가 된다.
이를 이용해 문제를 풀어보자.
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
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
while (N > 0) { String data = br.readLine();
Stack<Character> stack = new Stack<>();
boolean finish = false;
for (int i = 0;i < data.length(); i++)
{
char c = data.charAt(i);
if (c == '(') { stack.push(c);
} else {
if (stack.empty()) {
finish = true;// 빈 스택에 )가 들어가게 되는경우 NO가 된다.
break;
} else {
stack.pop();
} } }
System.out.println(stack.empty());
if (!stack.empty() || finish) {//스택이 비어있지 않거나,(없이 )가 빈 스택에 들어가 finsh가 true인 경우
System.out.println("NO");
} else{
System.out.println("YES");
} N--;
}
}
}
|
cs |
반응형
'알고리즘 > 백준(BAEKJOON)' 카테고리의 다른 글
[자바]1181 단어 정렬[백준] (0) | 2022.01.06 |
---|---|
[백준]10773번 제로 [JAVA] (0) | 2021.12.07 |
[백준]10828 스택 /자바/JAVA (0) | 2021.11.03 |
[JAVA] 백준 2750 수 정렬하기 (0) | 2021.10.12 |
백준 1차원배열/4344 자바/평균은 넘겠지 (0) | 2021.09.29 |