프로그래밍/일일코딩
[일일코딩][Java] 정수배열 중에서 3개를 뽑아 곱한 것의 최대값 반환하기
NYinJP
2023. 2. 7. 14:12
0️⃣ 문제
정수를 요소로 갖는 배열을 입력받아 3개의 요소를 곱해 나올 수 있는 최대값을 리턴합니다.
1️⃣ 수도 코드
값 저장할 어레이 리스트 생성
반복문 i
반복문 j
반복문 k
어레이리스트.add(arr[i]*arr[j]*arr[k]);
어레이 리스트에서 가장 큰 값 찾기
int max=어레이리스트.get(0)
반복문 i
만약 max값보다 더 큰 값이 있다면
max값 갱신
return max;
2️⃣ 코드
public int largestProductOfThree(int[] arr) {
// TODO:
// 배열의 요소가 들어올 때 세개를 그 중 세개를 뽑아 곱했을 때 가장 큰 수 리턴하기
// 값 저장할 변수
ArrayList<Integer> result=new ArrayList<>();
// 반복문 값들에 접근하면서
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
for(int k=j+1;k<arr.length;k++){
// 세개씩 곱한 값들 모두 result 어레이리스트에 add 하기
result.add(arr[i]*arr[j]*arr[k]);
}
}
}
// 어레이 리스트에서 가장 큰 값 찾기
int max=result.get(0);
for(int i=0;i<result.size();i++){
if(max<result.get(i)){
max=result.get(i);
}
}
// 결과 반환
return max;
}
3️⃣ 더 좋은 코드!
Arrays.sort(배열이름)
sort 메서드를 통해 int 타입은 물론 String 타입도 오름차순 정렬해준다
//배열을 오름차순으로 정리합니다.
Arrays.sort(arr);
int arrLength = arr.length;
//가장 큰 양수 3가지를 곱한 값
int candidate1 = arr[arrLength - 1] * arr[arrLength - 2] * arr[arrLength - 3];
//가장 작은 음수 2가지와, 가장 큰 양수를 곱한 값
int candidate2 = arr[arrLength - 1] * arr[0] * arr[1];
return Math.max(candidate1, candidate2);
배열을 정렬한 뒤에
가장 큰 수 세 개를 곱한 것과
가장 작은 음수 두 개와 가장 큰 양수 한 개를 곱한 것의 결과를 Math.max 메서드로 비교하였다.