본문 바로가기

문제 풀이/Programmers

[프로그래머스] 최솟값 만들기

문제 출처 - Programmers

문제는 여기

 

코딩테스트 연습 - 최솟값 만들기

길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱

programmers.co.kr


[풀이]

1. 입력으로 들어오는 배열 A와 B를 오름차순으로 정렬해준다.

2. A의 i번째와 B의 (길이 - i) 번째를 곱해서 이를 더해준다.

3. 2. 를 A의 길이만큼 해준다.

4. 결과를 출력한다.

[접근]

1. 한 배열에서는 작은 순, 한 배열에서 큰 순으로 곱하면 결과가 최솟값이 나올 것이라고 생각하였다.

[코드]

import java.util.*;

class Solution
{
    public int solution(int []A, int []B)
    {
        int answer = 0;
        
        // A와 B 오름차순 정렬
        Arrays.sort(A);
        Arrays.sort(B);
        
        // 길이가 같으니까 A 길이만큼 반복
        for (int i = 0; i < A.length; i++) {
            // 가장 작은 수와 가장 큰 값을 곱하는게 결과적으로 최소값이 나온다.
            answer += A[i] * B[B.length - 1 - i];
        }

        return answer;
    }
}