최댓값 만들기(1)

SeungJoo
|2023. 10. 3. 21:06
728x90

실행코드

첫 번째 코드

class Solution {

    public int solution (int[] numbers) {

        Arrays. sort(numbers);

        return numbers[numbers.length-1]*numbers[numbers.length-2];

    }

} 

첫 번째 코드로 풀었지만 너무 날로 먹는 코드 같아서 다른 풀이 방식 추가합니다.

두 번째 코드

class Solution {
    public int solution(int[] numbers) {
        int answer = 0;
        int max = 0;

        for(int i = 0; i < numbers.length; i++) {
            for (int j = i + 1; j < numbers.length; j++) {
                if (numbers[i] * numbers[j] > max) {
                    max = numbers[i] * numbers[j];
                }
            }
        }
        answer = max;

        return answer;
    }
}

코드 분석

첫 번째 코드 분석

`Arrays.sort(numbers);`:`numbers`

배열을 오름차순으로 정렬합니다. 이를 통해 배열에서 가장 큰 두 수는 배열의 마지막 두 원소에 위치하게 됩니다.

`return numbers[numbers.length - 1] * numbers[numbers.length -2];` 

정렬된 배열에서 가장 큰 두 수를 선택하여 곱한 값으로 반환 하며 numbers.length 는 배열의 길이를 나타내며 -1, 과 -2를 이용하여 마지막 수와 마지막에서 두 번째 수를 가져옵니다.

두 번째 코드 분석

int answer = 0;
int max = 0;

최종적으로 반환할 최댓값을 저장할 변수입니다.

 for(int i = 0; i < numbers.length; i++) {
            for (int j = i + 1; j < numbers.length; j++) {
           }
        }

중첩 for루프로 두 개의 for루프를 사용하여 배열의 모든 가능한 숫자 쌍을 곱하며 i는 배열의 첫 번째 원소부터 시작, j는 바깥쪽 루프 다음 위치에서 시작합니다.

if (numbers[i] * numbers[j] > max) {
                    max = numbers[i] * numbers[j];
                 }

i와 j에 해당하는 두 수를 곱한 결과가 max 보다 크면 max값을 업데이트합니다.

answer = max;

max를 answer에 복사하여 최종적으로 반환할 값을 설정합니다.

728x90

'알고리즘' 카테고리의 다른 글

버블정렬  (1) 2023.11.21
점의 위치 구하기  (0) 2023.09.30
가위 바위 보  (0) 2023.09.26