Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

KSI일기장

프로그래머스 최댓값 만들기(2) (자바) Math.max , Integer.MIN_VALUE 본문

JavaAlgorithm

프로그래머스 최댓값 만들기(2) (자바) Math.max , Integer.MIN_VALUE

MyDiaryYo 2023. 12. 1. 14:34

 

 

 

 

class Solution {
    public int solution(int[] numbers) {
        int answer = Integer.MIN_VALUE;
        
        //numbers 중 첫번째 값 선택
        for(int i=0; i<numbers.length; i++){
            
            //numbers 중 첫번째 값과 비교할 값 선택
            for(int j=0; j<numbers.length; j++){
                
                //첫번째 값과 두번째 값이 같지 않은 경우만 곱하기
                if(i != j){
                    int result = numbers[i]*numbers[j];
                    
                    //곱한 값들 중 최대값 구하기
                    if(result>answer){
                        answer = result;
                    }
                }
            }
        }
        return answer;
    }
}

 

 

class Solution {
    public int solution(int[] numbers) {
        int answer = Integer.MIN_VALUE;
        
        //numbers 중 첫번째 값 선택
        for(int i = 0; i < numbers.length; i++){
        
        	//numbers 중 첫번째 값과 곱할 두번째 값 선택
            //j=i+1은 i와 j가 중복 값 선택을 방지하기 위해
            for(int j = i + 1; j < numbers.length; j++){
            
            	//첫번째 값과 두번째 값을 곱해 그 중 최대값 구하기
                answer = Math.max(answer, numbers[i] * numbers[j]);
            }
        }
        return answer;
    }
}

 

 

answer에 초기값으로 0이 아닌 Integer.MIN_VALUE를 사용하는 이유

Integer.MIN_VALUE 정수 중 가장 작은 값이다.

answer=0; 이면 값을 넣어서 비교할 때 최대값이 음수일 경우 0이 음수보다 크기 때문에

음수는 비교하지 않고 무시하게 된다. 

그럼 최대값이 배열안에 수를 곱한 값이 아닌 0이 최대값이 되기 때문에

음수하고도 비교해주기 위해서 정수 중 가장 작은 값을 초기값으로 세팅하는 것이다.