티스토리 뷰

문제 출처 - https://programmers.co.kr/learn/courses/30/lessons/12929

 

코딩테스트 연습 - 올바른 괄호의 갯수 | 프로그래머스

올바른 괄호란 (())나 ()와 같이 올바르게 모두 닫힌 괄호를 의미합니다. )(나 ())() 와 같은 괄호는 올바르지 않은 괄호가 됩니다. 괄호 쌍의 개수 n이 주어질 때, n개의 괄호 쌍으로 만들 수 있는 모든 가능한 괄호 문자열의 갯수를 반환하는 함수 solution을 완성해 주세요. 제한사항 괄호 쌍의 개수 N : 1 ≤ n ≤ 14, N은 정수 입출력 예 n result 2 2 3 5 입출력 예 설명 입출력 예 #1 2개의 괄호쌍으로 [ (())

programmers.co.kr

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(int n) {
    int answer = 0;
    int sum;
    vector<int> v;
    
    for(int i=0; i<n; i++) {
        v.push_back(1);  // 왼쪽 괄호
        v.push_back(-1); // 오른쪽 괄호
    }
    
    do{
        sum = 0;
        answer++;
        for(int i=0; i<n*2; i++) {
            sum += v[i];
            if(sum < 0) { // 한번이라도 (왼쪽괄호 < 오른쪽괄호) 이면 틀린 괄호
                answer--;
                break;
            }
        }
    } while(next_permutation(v.begin(), v.end()));
    
    return answer;
}
  • 순열을 이용해 만들 수 있는 괄호의 모든 경우의 수를 찾고

  • 올바르지 않은 괄호를 뺌

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