본문 바로가기
Algorithm/백준풀이

[알고리즘 문제풀이] 백준 9012 괄호 (JAVA코드)

by 계범 2022. 2. 27.

목차

    https://www.acmicpc.net/problem/9012

     

    9012번: 괄호

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

    www.acmicpc.net

    /**
     * 1. 올바른 괄호열 찾기
     * 
     * 2. stack을 통한 구현
     * 
     * 3. t개의 테스트 데이터를 올바른 괄호열인지 "YES", "NO" 반환
     * 
     */
    
    import java.io.*;
    import java.util.Stack;
    import java.util.StringTokenizer;
    
    public class Test {
        public static void main(String[] args) throws IOException{
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    
            int t = Integer.parseInt(br.readLine());
    
    
            for(int tc = 0; tc < t; tc ++){
                String str = br.readLine();
    
                if(check(str)){
                    bw.write("YES\n");
                }else{
                    bw.write("NO\n");
                }
            }
    
            bw.flush();
            bw.close();
        }
    
        // 괄호열이 올바른지 체크하는 함수
        public static boolean check(String str){
            
            Stack<Character> stack = new Stack<>();
    
            for(int i = 0; i < str.length(); i++){
                char c = str.charAt(i);
                if(c == '('){
                    stack.push(c);
                }else{
                    if(stack.isEmpty() || stack.peek() != '('){
                        return false;
                    }
                    stack.pop();
                }
            }
    
            return stack.size() > 0 ? false : true;
        }
    
    }

     

    스택 공부하기 좋은 문제들

    https://programmers.co.kr/learn/courses/30/lessons/12973

     

    코딩테스트 연습 - 짝지어 제거하기

    짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙

    programmers.co.kr

    https://programmers.co.kr/learn/courses/30/lessons/76502

     

    코딩테스트 연습 - 괄호 회전하기

     

    programmers.co.kr

    https://www.acmicpc.net/problem/1874

     

    1874번: 스택 수열

    1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.

    www.acmicpc.net

     

    댓글