[프로그래머스] 12909. 올바른 괄호

최대 1 분 소요

문제 링크

[프로그래머스] 12909. 올바른 괄호


풀이 과정

스택을 사용해서 올바른 괄호 쌍을 확인했습니다.

스택에 push 와 pop 하는 과정은 다음의 절차를 따릅니다.

문자열을 순회하면서, 현재 문자가

  1. 여는 괄호일 때에는 스택에 push합니다.
  2. 닫는 괄호일 때에는,
    1. 스택의 top 이 여는 괄호일 때는 쌍이 맞음을 의미하므로, top을 pop 합니다.
    2. 스택의 top이 닫는 괄호일 때는, 잘못된 괄호 쌍을 의미합니다. 잘못된 괄호쌍임을 의미하기 위해 스택에 push 합니다.

주어진 문자열 s를 모두 순회하고 나서 스택이 비어있으면 해당 문자열이 올바른 괄호 쌍임을, 스택이 비어있지 않으면 잘못된 괄호 쌍임을 알 수 있습니다.

아래 그림을 통해 위에 작성해 둔 매커니즘대로 작동하는 것을 살펴볼 수 있습니다.


코드

import java.util.Stack;

public class Main {
    public static boolean solution(String s) {
        boolean answer = true;

        Stack<Character> stack = new Stack<>();

        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);

            if (stack.empty()) stack.push(c);
            else {
                if (c == ')' && stack.peek() == '(')
                    stack.pop();
                else
                    stack.push(c);
            }
        }

        answer = stack.size() == 0 ? true : false;

        return answer;
    }

    public static void main(String[] args) {
//        String s = "()()";
//        String s = "(())()";
//        String s = ")()(";
        String s = "(()(";

        System.out.println(solution(s));
    }
}

카테고리:

업데이트:

댓글남기기