devFancy BE Developer

[Programmers] 12941. 최솟값 만들기

2023-02-04
devfancy

문제 링크

성능 요약

메모리: 메모리: 52 MB, 시간: 1.57 ms - Answer Code1

구분

코딩테스트 연습 > 연습문제

Answer Code1(23.02.04)

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;
    }
}

문제 풀이

  • 양쪽에서 각각 한개의 숫자를 뽑아 곱한 값을 누적하였을 때 한 쪽의 최댓값과 다른 쪽의 최솟값을 곱하는 경우 누적값을 최소로 구할 수 있다

    • 정렬을 하기 위해서는 import java.util.Arrays; 선언해야 한다.

    • Arrays.sort() : 기본 정렬 조건이 오름차순 이다.

  • 따라서 A와 B 배열을 정렬하여 한 쪽의 최댓값과 다른 쪽의 최솟값을 곱해 누적하면 최소값을 구할 수 있다

Review

  • 최솟값을 구하는 조건을 바로 떠올리지 않아서 시간이 좀 걸렸지만, 조건만 알 수 있으면 바로 풀 수 있는 문제였다.

  • 최솟값을 구하는 조건에 대해서 잘 기억해두자.


Comments

Index