728x90
1. 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class BOJ_9012_괄호 {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(in.readLine());
Stack<Character> stack;
StringBuilder sb = new StringBuilder();
while(T-->0){
stack = new Stack<>();
String line = in.readLine();
for(int i=0;i<line.length();i++){
if(line.charAt(i)=='(') stack.push('(');
else if(!stack.empty()) stack.pop();
else {
stack.push('*'); //체크위해서 넣어둠
break;
}
}
if(stack.empty()) sb.append("YES\n");
else sb.append("NO\n");
}
System.out.print(sb);
}
}
'('이면 push, ')'이고 stack이 비어있지 않으면 pop시킨다.
')'이고 stack이 비어있다면 짝을 이루는 '('가 없다는 의미이므로 반복을 멈춘다. 마지막에 stack.empty()로 VPS여부를 체크하기때문에 반복을 멈추기 전에 비어있는 스택에 의미없는 '*'를 넣어주었다.
2. 결과
풀 때는 헷갈렸지만 다 풀고나면 간단한 문제였다.
'짝을 이룬다'는 점에만 초점을 두면 쉽게 풀린다.
'코딩테스트 > BOJ' 카테고리의 다른 글
[BOJ] 17298 오큰수 - JAVA (0) | 2022.02.05 |
---|---|
[BOJ] 1874 스택수열 - JAVA (0) | 2022.02.05 |
[BOJ] 4949 균형잡힌 세상 - JAVA (0) | 2022.02.05 |
[BOJ] 10772 제로 - JAVA (0) | 2022.02.05 |
[BOJ] 10828 스택 - JAVA (0) | 2022.02.05 |
댓글