[algorithm] 프로그래머스 최댓값 만들기(1)

쓰옹·2022년 12월 30일
0

알고리즘 💻

목록 보기
5/6

🔒문제


문제설명

정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.

제한사항

0 ≤ numbers의 원소 ≤ 10,000
2 ≤ numbers의 길이 ≤ 100

입출력 예

numbers -> result
[1, 2, 3, 4, 5] -> 20
[0, 31, 24, 10, 1, 9] -> 744



🔐나의 답


배열에서 가장 큰 수와 작은 수를 곱하면 된다고 생각을 했다.
그래서 가장 큰 수를 뽑고 그 수를 제외한 배열에서 가장 큰 수를 구해서 곱하면 된다고...

import java.util.Arrays;

class Solution {
    public static int[] removeElement(int[] arr, int item) {
        return Arrays.stream(arr)
                .filter(i -> i != item)
                .toArray();
    }
    
    public int solution(int[] numbers) {
        int max = 0;
        for (int num : numbers) {
            max = num > max ? num : max;
        }
        
        int[] numbersWithoutMax = removeElement(numbers, max);
        
        int secondMax = 0;
        for (int num : numbersWithoutMax) {
            secondMax = num > secondMax ? num : secondMax;
        }
        return max * secondMax;
    }
}

...ㅠㅠ 어렵게 어렵게 생각하고 작성한 거였는데...

그래서 찾아보니까.. 그냥 배열 정렬시켜서 큰 수 두개 뽑으면 되는거였음..
근데 내 답은 왜 안될까.. 왜 100이 아닐까 궁금하다
흐흐흫 알아냈다.. tild에 적어야짛



🔑남의 답


남의 답 출처

import java.util.Arrays;

class Solution {
    public int solution(int[] numbers) {
        // 배열 오름차순으로 정렬
        Arrays.sort(numbers);
        // 정렬한 배열의 마지막 전 숫자와 마지막 숫자 곱을 구한다.
        return numbers[numbers.length-2]*numbers[numbers.length-1];
    }
}

오름차순 정렬.. sort()!!!!

profile
기록하자기록해!

0개의 댓글