Codility - MaxProductOfThree
카테고리 없음
2022. 11. 27. 15:05
이 문제도 너무 쉬운 문제였는데 코딩 테스트 감이 떨어져서 아주 빙글빙글 돌다가 겨우 실마리를 찾아서 푼 케이스다.
- 일단 sorting이 필요하다.
- 정렬된 상태에서 오름차순으로 곱하면 된다.
- 2번 케이스만 고려할 경우 음수, 0일 때는 잘못된 결과를 리턴할 수 있어 정렬된 상태에서 첫번째, 두번째, 마지막 배열의 수를 곱한다.
- 2,3의 값을 비교해서 큰 값을 리턴
public static int solution(int[] A) {
Arrays.sort(A);
int len = A.length;
// 정렬한 후 max 3개의 값과
int firstMultipleSum = A[len-1] * A[len-2] * A[len-3];
// 음수인 경우를 고려하여 1,2,마지막 곱 비교
int secondMultipleSum = A[0] * A[1] * A[len-1];
if (firstMultipleSum > secondMultipleSum) {
return firstMultipleSum;
} else {
return secondMultipleSum;
}
// 다른 사람 소스를 보니 Math.max, min을 사용하기도 함.
}
- 문제를 잘게 쪼개서 보는 연습부터해야 divide and conquer 전략
- 문제를 있는 그대로 읽을 것 한 번 비틀어서 생각하지 말것(의외로 답은 쉽다.)
- 1,2번으로 생각한 다음 제약 사항 및 주어진 조건에 대해 고려하여 2번째 케이스를 생각해낸다.
반응형