알고리즘
[프로그래머스] 4단 고음 (C++)
Code Bomber
2020. 12. 18. 15:53
문제 링크 : programmers.co.kr/learn/courses/30/lessons/1831
코딩테스트 연습 - 4단 고음
4단 고음 I'm in my dream~↗ ~↗ ~↗ IU는 본인의 장기인 3단 고음으로 유명하다. 그러던 그녀가 어느 날 4단 고음을 성공했고 그녀의 고음은 학계에서 연구가 될 만큼 유명해졌다 [1]. [1] 견두헌, 배명
programmers.co.kr
#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);
}