본문 바로가기
프로그래머스/[프로그래머스 - JAVA] Lv.0

[프로그래머스 - JAVA] 최댓값 만들기(2)

by 코딩하는 흰둥이 2023. 3. 10.

 

  • 내 풀이( 제출 테스트 1개 실패)
class Solution {
    public int solution(int[] numbers) {
        int answer = 0;
        int result = 0;
        
        for(int i = 0; i < numbers.length; i++){
            for(int j = i+1; j < numbers.length; j++){
                result = numbers[i] * numbers[j];
                
                if(answer < result){
                    answer = result;
                }
            }
        }
        return answer;
    }
}
  • 변경 풀이
import java.util.Arrays;
class Solution {
    public int solution(int[] numbers) {
        int answer = 0;
        int result = 0;
        
        Arrays.sort(numbers);
        
        int min = numbers[0] * numbers[1];
        int max = numbers[numbers.length - 1] * numbers[numbers.length-2];
        
        if (min > max){
            answer = min;
        }else {
            answer = max;
        }
        return answer;
    }
}

배열에는 음수와 양수가 섞여 있기 때문에 정렬을 해주고 처음과 마지막 곱의 값을 비교해준다

처음 풀이는 너무 어렵게 생각했다 for문을 두번 돌리려고하니 괜히 더 복잡해진다.

 

  • 다른 사람 풀이
import java.util.*;

class Solution {
    public int solution(int[] numbers) {
        int len = numbers.length;
        Arrays.sort(numbers);
        return Math.max(numbers[0] * numbers[1], numbers[len - 2] * numbers[len - 1]);
    }
}

Math.max 함수를 이용한 풀이

테스트를 제출하기 전에 메소드와 함수를 좀 더 생각해보고 코드를 짜봐야겠다.

댓글