https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
문제
풀이
처음에는 문제를 잘못 이해하고 괄호의 개수로 문제를 풀었다...
이 문제는 닫는 괄호를 중심으로 지금까지 나온 괄호의 개수가 같아야한다.
즉, 스택을 이용해서 여는 괄호가 나왔을 때 push를 하고 닫는 괄호가 나왔을 때, pop을 한다.
이것을 반복해서 최종적으로 스택에 아무것도 남아있지 않으면 괄호의 개수가 같다는 것이고 VPS라는 것!
그리고 주의해야 할점은 pop할때 스택에 값이 있는지 확인해야한다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class BOJ9012 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int num = Integer.parseInt(br.readLine()); // 값 입력받기
for(int i=0;i<num;i++) {
boolean stop=false;
String input = br.readLine();
Stack<Character> stack = new Stack<>();
for(int j=0;j<input.length();j++) {
char left = input.charAt(j);
if(left=='(') {
stack.push(left);
}
else if(left==')') {
if(stack.empty()) {
stop=true;
break;
}else {
stack.pop();
}
}
}
if(!stack.isEmpty() || stop) {
sb.append("NO\n");
}else {
sb.append("YES\n");
}
}
System.out.println(sb);
}
}
'코딩테스트' 카테고리의 다른 글
[BOJ_1406/JAVA] 에디터 (0) | 2021.12.15 |
---|---|
[BOJ_1874/JAVA] 스택 수열 (0) | 2021.12.14 |
[BOJ_10845/JAVA] 큐 (0) | 2021.12.11 |
[BOJ_1157/JAVA] 단어공부 (0) | 2021.12.11 |
[BOJ_2309/JAVA] 일곱 난쟁이 (0) | 2021.12.07 |