[JAVA]

[프로그래머스 JAVA] 최솟값 만들기 문제 풀이

미냠 2023. 11. 16. 23:05
반응형

 

입력받은 같은 길이의 두 배열에서 하나씩 뽑아 곱한 값을 더했을 때

나올 수 있는 가장 작은 값을 출력하는 문제다. 

 

 

즉, A 배열의 작은 수와 B배열의 큰 수를 곱하여 순차적으로 더하면 가장 작은 최솟값이 나올것이다

처음에는 A 배열을 오름차순, B 배열을 내림차순으로 재정렬하여 곱한 값들을 모두 더했다.

근데 타임아웃이 되버렷당..ㅎ 

 

그리고  Arrays.sort() 를 활용하면 자동으로 오름차순으로 배열을 정렬해준다는 사실.. 

문제풀이를 할수록 느끼는 것은 자바 메소를 얼마나 잘 활용하냐에 따라서 속도의 차이가 크다는 것.. 

 

내림차순은 불가능하기 때문에 두배열 모두 오름차순으로 정렬하고

하나의 배열만 거꾸로 호출해서 곱해버리면 끝 ㅋ 

 

import java.util.*;

// A 배열의 오름차순 정렬과 B 배열의 내림차순 정렬을 곱하면 가장 작은 수의 곱이 나온다
class Solution
{
    public int solution(int []A, int []B)
    {
        int answer = 0;

        // 오름차순 정렬 
        Arrays.sort(A);
        Arrays.sort(B);

        for (int i=0; i<A.length; i++) {
            // 내림차순 정렬이 없음으로 B 배열은 뒤부터 호출 
            answer += A[i] * B[(A.length-1)-i];
        }       
        // System.out.println(answer);
        return answer;
    }
}

 

 

 

문제를 여러번 반복해서 풀면서 메소드를 잘 활용할 수 있는 것이 관건인 것 같다. 

반응형