코딩테스트

SWEA 1218 : 괄호 짝짓기

joonwoong 2024. 3. 11. 21:43

문제.

 

 

풀이.

스택을 이용하여 여는 괄호는 스택에 넣고 닫는 괄호가 들어오게 되면 스택에서 팝을 한뒤에 여는괄호와 짝이 맞는지 확인한다.

 

코드.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;

public class App {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        String open = "([{<";
        String close = ")]}>";

        for(int TC=1;TC<=10;TC++){
            Stack<Character> stack = new Stack<>();
            int N = Integer.parseInt(br.readLine());
            String str = br.readLine();
            int result = 1;

            for(int i=0;i<N;i++){
                if(open.contains(Character.toString(str.charAt(i)))){
                    stack.push(str.charAt(i));
                }
                else if(close.contains(Character.toString(str.charAt(i)))){
                    if(stack.empty()){
                        result = 0;
                        break;
                    }
                    int index = close.indexOf(str.charAt(i));
                    char ch = stack.pop();
                    if(ch != open.charAt(index)){
                        result = 0;
                        break;
                    }
                }
            }
            if(!stack.empty()){
                result = 0;
            }
            sb.append("#"+TC+" "+result+"\n");
        }
        System.out.println(sb);
    }
}

 

 

결과.

 

 

소감.

스택을 사용하는 것이 익숙하지 않아서 생각보다 오답이 많이 나왔다.. 아쉬운 부분

'코딩테스트' 카테고리의 다른 글

프로그래머스 : 같은 숫자는 싫어  (0) 2024.03.19
SWEA 1219 : 길찾기  (0) 2024.03.19
SWEA 1217 : 거듭제곱  (0) 2024.03.11
SWEA 1216 : 회문2  (0) 2024.03.05
SWEA 1215 : 회문1  (0) 2024.03.05