본문 바로가기
Log/Coding Test

Day113_Programmers Lv.0 '최댓값 만들기(1)' Java

by uxia 2024. 2. 28.

프로그래머스 Lv.0 '최댓값 만들기(1)' 자바

 

Q. 정수 배열 numbers가 매개변수로 주어진다.

numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록

solution 함수를 완성하시오.

 

class Solution {
    public int solution(int[] numbers) {
        int max1 = Integer.MIN_VALUE;
        int max2 = Integer.MIN_VALUE;
        
        for (int i = 0; i < numbers.length; i++) {
            if (numbers[i] > max1) {
                max2 = max1;
                max1 = numbers[i];
            } else if (numbers[i] > max2) {
                max2 = numbers[i];
            }
        }
        
        int answer = max1 * max2;
        return answer;
    }
}

 

가장 큰 값 max1과 두 번째로 큰 값 max2를 초기화시킨다.

int max1 = numbers[0];

int max2 = numbers[0];

이렇게 해도 되지만, 이럴 경우 numbers[0]이 가장 큰 값이라면,

max1과 max2가 같은 값으로 지정되어 오류가 발생할 수 있다.

그래서 Integer.MIN_VALUE 메서드를 이용했다.

 

반복문을 돌며 조건문을 사용해 가장 큰 값을 찾아

max1에 넣는다.

 

이 때 max2 = max1; 코드로

최댓값을 발견할 때마다 이전 최댓값을 max2에 넣는 작업을 해줘야한다.

 

조건문을 사용해 두 번째로 큰 값을 찾는 과정을 한 번 더 해주고

두 값을 곱해주면 된다.