최댓값 만들기 (2)

문제

 


나의 생각

 

배열에 있는 값들을 서로 곱할 수 있게 2중 for문을 사용. 

2번째 for문의 경우 i + 1 값에서 시작하게 하여 중복된 index값으로 계산이 안되게 접근. 

index가 0,1 일 경우 -1 값을 가졌을 때 answer 조건에 맞지 않을 수 있음. (if 문으로 처리)

 


나의 답안

 

public static int solution(int[] numbers) {
    int answer = 0;
    if (numbers.length == 2){
        answer = numbers[0] * numbers[1];
    }
    for (int i = 0 ; i < numbers.length; i ++) {
        for (int j = i+1 ; j < numbers.length; j ++){
            System.out.printf("%d : %d = %d \n", numbers[i] , numbers[j], numbers[i] * numbers[j]);
            if ( numbers[i] * numbers[j] > answer){
                answer = numbers[i] * numbers[j];
            }
        }
    }

    return answer;
}

다른 답안

 

배열에 있는 index 0,1 값과 index 마지막값 + 마지막 값 -1 값을 기준으로 해서 더 높은 값을 산출해내는 방식으로 접근했다. 개념을 파악하고 다음에 적용가능토록 해야겠다.

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]);
    }
}

'Programmers 문제풀이 > Lv.0' 카테고리의 다른 글

가장 큰 수 찾기  (0) 2023.02.27
배열 회전시키기  (0) 2023.02.27
주사위의 개수  (0) 2023.02.27
n의 배수 고르기  (0) 2023.02.27
직각삼각형 출력하기  (0) 2023.02.27