본문 바로가기
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

 

댓글