알고리즘

[프로그래머스] 4단 고음 (C++)

Code Bomber 2020. 12. 18.

문제 링크 : 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);
}

댓글