Leetcode Java Integer Break
업데이트:
문제
코드
class Solution {
public int integerBreak(int n) {
if (n <= 3) {
return n - 1;
} else {
int product = 1;
while (n > 4) {
product *= 3;
n -= 3;
}
return product * n;
}
}
}
결과
설명
-
주어진 정수 n을 정수의 합으로 표현 가능한 2개 이상의 정수로 쪼갠 숫자들의 곱이 최대인 결과를 찾는 문제이다.
-
n이 3 이하인 경우, 최대가 되는 숫자인 $n - 1$를 주어진 문제의 결과로 반환한다.
-
2개 이상의 정수로 쪼갠 숫자들의 곱이 최대가 되는 결과를 저장할 product를 정의하고 1로 초기화한다.
- n이 4보다 클 때까지 반복하여 product에 3을 곱해주고, n에 3을 빼준다.
- n을 3단위로 줄여가며 곱하는 가장 큰 이유는, 6의 경우 $3 \times 3 = 9 > 6 = 2 \times 2 \times 2$, 10의 경우 $3 \times 3 \times 4 = 36 > 25 = 5 \times 5 $로 3 위주의 곱이 가장 큰 결과를 도출 할 수 있다.
- 반복문이 완료되면 product와 남은 값인 n의 곱을 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기