Algorithms/- 프로그래머스

프로그래머스 - 올바른 괄호의 갯수 [자바]

자굿 2022. 3. 15. 23:07
 

코딩테스트 연습 - 올바른 괄호의 갯수

올바른 괄호란 (())나 ()와 같이 올바르게 모두 닫힌 괄호를 의미합니다. )(나 ())() 와 같은 괄호는 올바르지 않은 괄호가 됩니다. 괄호 쌍의 개수 n이 주어질 때, n개의 괄호 쌍으로 만들 수 있는 모

programmers.co.kr

 

정답(Solution)

import java.util.*;

class Solution {

    private class P {
        int open, close;

        P(int open, int close){
            this.open = open;
            this.close = close;
        }
    }

    public int solution(int n) {
        int answer = 0;

        Stack<P> st = new Stack<>();
        st.push(new P(0,0));

        while(!st.isEmpty()){
            P p = st.pop();

            if(p.open > n) continue;
            if(p.open < p.close) continue;
            if(p.open + p.close == 2 * n) {
                answer++;
                continue;
            }

            st.push(new P(p.open + 1, p.close));
            st.push(new P(p.open, p.close + 1));
        }

        return answer;
    }
}

 

분석

  • dfs로 풀이하였다.
  • dfs는 기본적으로 Stack을 사용한다.
반응형