카테고리 없음
[Java/백준/스택] 9012 - 괄호
weero
2020. 9. 5. 23:06
문제
https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
코드
열린괄호( "(" )가 들어올 때 Stack에 쌓고 - push
닫힌괄호( ")" )가 들어올 때 비어있지 않으면 pop
비어있으면 짝이 맞지 않으므로 flag를 false로 돌렸다.
한 줄을 다 읽으면 Stack에 남아있는 것이 없는지, flag가 true인지 검사한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
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());
ArrayList<String> answer = new ArrayList<String>();
for(int i=0; i<N; i++) {
String ps = br.readLine();
boolean flag = true;
Stack<String> stack = new Stack<String>();
for(int j=0; j<ps.length(); j++) {
if(ps.substring(j,j+1).equals("(")) {
stack.push("(");
}else{
if(stack.isEmpty()) {
flag = false;
break;
}
stack.pop();
}
}
if(stack.isEmpty() && flag) {
answer.add("YES");
}else {
answer.add("NO");
}
}
for(String ans : answer) {
System.out.println(ans);
}
}
}