https://www.acmicpc.net/problem/9012
문제
()를 VPS라 했을때, x = () 이라고 하면,
(x)또한 VPS가 된다. (()())
풀이
스택으로 문제를 풀어보자.
1. 테스트 케이스를 입력받는다.
2. (1)에서 입력받은 테스트케이스의 수 만큼, 문자열을 입력한다.
3. '('
이 들어올 경우 push를 하고, ')'
가 들어올 경우 pop을 해준다.
4. 만약 첫번째에 ')'
가 들어올 경우 No를 출력한다.
소스코드
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
for(int i=0;i<T;i++){
System.out.println(solve(scan.next()));
}
}
public static String solve(String s){
Stack<Character> stack = new Stack<>();
for(int i=0;i<s.length();i++){
char c = s.charAt(i);
if( c == '(') {
stack.push(c);
} else if(stack.empty()){
return "NO";
} else {
stack.pop();
}
}
if(stack.empty()){
return "YES";
}
else{
return "NO";
}
}
}