Java/Coding Test

팩토리얼

최고다최코딩 2023. 9. 11. 00:09
728x90

 정수 n이 주어질 때  i!<=n 을 만족하는 가장 큰 정수 i를 반환 

 

>1부터 i까지 1씩 증가하는 수를 곱해가며 n과 비교하여 i를 구한다. 

public int solution(int n) {

if (n == 0)

return 0;

int answer = 1;

int f = 1;

/*-*/

return factorial(n, answer, f);

}

 

public int factorial(int n, int answer, int f) {

f *= answer;

if (n < f) {

return answer - 1;

} else if (n == f)

return answer;

return factorial(n, answer + 1, f);

}

f= answer! 

> f는answer의 팩토리얼값

f와 n을 비교하여  n과 같으면 answer반환, n 보다 크면 answer-1 반환

f가 n보다 작으면 answer를 1 증가시켜 다시 반복한다.  

 

>while문으로 표현

public int solution2(int n) {

int answer = 1;

int m = 1;

while (true) {

m = m * answer;

if (m < n) {

answer++;

} else if (m == n) {

return answer;

} else if (m > n) {

return answer - 1;

}

}

}

m ==answer!;

m 이 n보다 작으면 answer를 증가시키고 다시 반복한다.