티스토리 뷰

www.acmicpc.net/problem/9012

 

9012번: 괄호

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

www.acmicpc.net

1. 문제

주어진 괄호 문자열이 올바른 괄호 문자열인지 판단하는 문제.

 

입)

6

(())())

(((()())()

(()())((()))

((()()(()))(((())))()

()()()()(()()())()

(()((())()(

 

출)

NO

NO

YES

NO

YES

NO

2. 풀이

import java.io.*;
import java.util.Stack;

public class Main {
    public static String isValid(String str) {
        Stack<Character> stack = new Stack<>();
        for (char c : str.toCharArray()) {
            if (c == '(') {
                stack.push(c);
            } else {
                if (!stack.isEmpty()) {
                    stack.pop();
                } else {
                    return "NO\n";
                }
            }
        }
        if (!stack.isEmpty()) {
            return "NO\n";
        } else {
            return "YES\n";
        }
    }
    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 cnt = Integer.parseInt(br.readLine());
        while (cnt-- > 0) {
            bw.write(isValid(br.readLine()));
        }
        bw.flush();
    }
}

스택을 이용해서 여는 괄호 문자일 경우 스택에 push하고, 닫는 괄호 문자일 경우 스택에서 pop해서 판단함.

만약, 스택이 비었는데 닫는 괄호 문자가 입력된 경우 NO로 출력. loop 다 돌고나서 스택에 값이 있으면 NO로 출력.

그 외는 올바른 괄호 문자열로 판단함.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
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
글 보관함