문제 링크 : programmers.co.kr/learn/courses/30/lessons/1831
#include <cmath>
using namespace std;
int treble(int n, int plusCnt)
{
int result=0;
// log(n)/log(3) = *의 개수
if(n < 1 || 2 * log(n) / log(3) < plusCnt){
return 0;
}
// 마지막은 음높이3이고 ++이어야함
if(n == 3 && plusCnt == 2){
return 1;
}
// *++ 충족되면 바로바로 없애
if(n % 3 == 0 && plusCnt >= 2){
result += treble(n / 3, plusCnt - 2);
}
result += treble(n - 1, plusCnt + 1);
return result;
}
int solution(int n) {
return treble(n-2,2);
}
'알고리즘' 카테고리의 다른 글
[프로그래머스] 줄 서는 방법 (C/C++) (0) | 2020.12.22 |
---|---|
[프로그래머스] 멀쩡한 사각형 (C/C++) (0) | 2020.12.21 |
[프로그래머스] 도둑질 (C/C++) (0) | 2020.12.20 |
[프로그래머스] 가사 검색 (C/C++) (0) | 2020.12.19 |
[프로그래머스] 3 x n 타일링 (C++) (0) | 2020.12.18 |
댓글