Shiny Sky Blue Star

프로그래머스 문제 풀이/프로그래머스 (JAVA)

JAVA 프로그래머스 Lv.2 최솟값 만들기

gamja00 2024. 12. 21. 00:37

 

https://school.programmers.co.kr/learn/courses/30/lessons/12941

 


문제

  1. 입력으로 1차원 int 배열 A, B  ( 1 <= A.length, B.length <= 1000,  1 <= A.[i], B[i] <= 1000 )가 입력으로 들어옴.
  2. 각 배열에서 수를 1개씩 선택하여 둘을 더한 후 최종 값에 더한다. 이 때 선택하여 사용한 수는 다시 사용할 수 없다.
  3. 최종 값이 최소가 될 수 있도록 하라.

 

완성 코드

import java.util.Arrays;

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++) {
            answer += A[i] * B[B.length - 1 - i];
        }

        return answer;
    }
}

 

간단하게 두 수를 오름차순 정렬한 후 서로 역순이 되도록 이용하여 곱한 후 더해주었다.

가장 큰 수와 가장 작은 수를 곱하여 두 수가 해당 값에서 최선으로 작은 수가 되도록 하였다.

 

두 배열이 서로 역순이 되도록 (오름차순, 내림차순 또는 내림차순, 오름차순) 이 되도록 하여 같은 방향에서 곱해주는 것과 같은 동작 방법이다.