728x90
https://school.programmers.co.kr/learn/courses/30/lessons/12929
728x90
메모리: 93.6 MB, 시간: 26.49 ms
사용 알고리즘: 백트래킹, 완전 탐색
처음엔 괄호 모양에 따라 dp로 풀려고 했는데 예외가 너무 많은 것 같아서 포기
n의 최대가 14라 $2^{14}$ 밖에 걸리지 않으므로 그냥 완전 탐색으로 풀었다.
class Solution {
static int n;
static int answer;
public int solution(int n) {
this.n = n;
answer = 0;
backTracking(0, 0);
return answer;
}
// open := 열린 괄호가 사용된 개수
// close := 닫힌 괄호가 사용된 개수
private static void backTracking(int open, int close) {
if(open == n && close == n) {
answer++;
return;
}
// 올 수 있는 열린 괄호 개수가 남았다면
if(open < n) {
backTracking(open + 1, close);
}
// 올 수 있는 닫힌 괄호 개수가 남았다면
if(open > close) {
backTracking(open, close + 1);
}
}
}
728x90
'Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스, 12973] 짝지어 제거하기 (java) (0) | 2024.08.10 |
---|---|
[프로그래머스, 12934] 정수 제곱근 판별 (java) (0) | 2024.08.10 |
[프로그래머스, 12987] 숫자 게임 (java) (0) | 2024.08.09 |
[프로그래머스, 12945] 피보나치 수 (java) (0) | 2024.08.09 |
[프로그래머스, 12933] 정수 내림차순으로 배치하기 (java) (0) | 2024.08.09 |