주 1회 회사 동기들이랑 알고리즘 스터디를 진행하고 있다.
현재 진행하고 있는 스터디는 오프라인 코딩테스트로도 많이 활용하고 있는 Codility.
각자 풀고 자기가 푼 소스를 리뷰하는 형식인데, 뜻 깊고 보람도 있고 참으로 도움이 많이 된다 :)
뛰어나진 않지만 각 단원 별로 100% 만들기 위해 노력 중이고, 기록 및 공유하기 위해 글을 작성한다.
바로가기 >Codility >MaxProductOfThree
문제 해석 : 음양수가 있는 배열 원소값을 3개 뽑아 곱했을 때, 수가 큰 값을 리턴하는 문제
문제 풀이 : 가장 큰 수가 나올 수 있는 경우의 수를 분석하고, 그에 대해 가장 큰 수를 찾도록 풀었다.. :)
요고 핵심은 음양수가 있는 배열에서 가장 큰 수를 찾는 방법은 "양*양*양", "양*음*음" 이라는 것이다.. 🌝
import java.util.*;
class Solution {
public int solution(int[] A) {
/**
* 가장 큰 수가 나올 수 있는 경우의 수는 2가지.
* 1. 양 * 양 * 양
* 2. 양 * 음 * 음 = 음 * 양 * 양
*/
Arrays.sort(A);
int lastIdx = A.length-1;
int plusGop = A[lastIdx] * A[lastIdx-1] * A[lastIdx-2]; //6*5*2
int maxGop = A[lastIdx] * A[0] * A[1]; //6*-3*-2
return plusGop > maxGop ? plusGop : maxGop;
}
}
반응형
'Self Dev. > Codility' 카테고리의 다른 글
[Codility] Triangle 100% (0) | 2019.09.08 |
---|---|
[Codility] Distinct 100% (0) | 2019.09.08 |
[Codility] MinAvgTwoSlice 100% (0) | 2019.09.08 |
[Codility] PassingCars 100% (0) | 2019.09.08 |
[Codility] MissingInteger 100% (0) | 2019.09.08 |
댓글