13 * 29 : 13*13 2개, 3*3 4개 1* 1 3개 = ans : 9
풀이 : 아무래도 짧은 변을 한 변으로 하는 정사각형을 긴 쪽으로 할 수 있는 만큼 만든 후에, 남은 길이를 재귀적으로 호출하면 된다.
base case는 한쪽 길이가 1이면 조각의 수는 긴 쪽 길이이다.
int findsquares(int M, int N){
// base case
if(N==1) return M;
// general case
int count = M/N;
return count + findsquares(N,M%N);
}
시간 복잡도 .. O(log 루트N) 쯤 되지 않을까? 작은 것 보다 작게 만드니까 작은 것으로 만든다고 가정하면 대략 logN이고..
'Programming Problems > Recursive' 카테고리의 다른 글
이중 리스트의 모든 조합을 출력해보자. (0) | 2018.04.23 |
---|---|
폭탄 터트려서 최대 점수 얻기 (0) | 2018.04.22 |
안드로이드의 가능한 모든 비밀번호의 갯수를 세 보자. (0) | 2018.04.22 |
스트링 하나를 다른 한쪽에 끼워넣는 경우의 수 구하기 (0) | 2018.04.22 |
행렬에서 붙어있는 연속한 숫자들 중 가장 긴 조합 찾기 Q (0) | 2018.04.22 |