9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

 

스택을 이용했다.

'('일땐 스택에 넣어주고

')'일땐 스택에서 빼줬다.

 

pop()은 스택의 맨 위에 있는 값(가장 최근에 들어온 값)을 스택에서 제거하면서 반환하는 함수.

스택에 아무것도 없을때 pop()을 쓰게되면 예외가 발생하기 때문에,

try catch문 써서 "NO" 를 출력할 수 있게 처리했다.

또한 마지막에 스택이 비어있지 않다면 '(' 가 더 많다는 뜻이므로

역시 "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
35
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc= new Scanner(System.in);
        int T = Integer.parseInt(sc.nextLine());
 
        for(int i = 0; i < T; i++){
            boolean check = true;
            Stack stk = new Stack();
            String str = sc.next();
 
            for(int j = 0; j < str.length(); j++){
 
                if(str.charAt(j) == '('){
                    stk.push('(');
                }else{
                    try{
                        stk.pop();
                    }catch (Exception e){
                        check = false;
                        break;
                    }
                }
            }
            if(!stk.empty())
                check = false;
 
 
            if(check)
                System.out.println("YES");
            else
                System.out.println("NO");
        }
    }
}
cs

+ Recent posts