Algorithm/Java

프로그래머스 - 최솟값 만들기 JAVA :: 12941

고고마코드 2022. 8. 1. 13:50
반응형

문제 링크

코딩테스트 연습 - 최솟값 만들기 | 프로그래머스 스쿨 (programmers.co.kr)


문제 풀이

  • 📌한 번 뽑은 요소는 또 뽑을 수 없다.
    그러므로 문제에서 두 배열의 각 원소를 곱하여 가장 작은 수를 구하는 방법은

  • 각 배열의 (가장 작은 수 x 가장 큰 수)

1번 풀이

import java.util.Arrays;

public class Solution {
    public int solution(int[] A, int[] B) {
        Arrays.sort(A);
        Arrays.sort(B);

        int sum = 0;
        for(int i=0; i<A.length; i++) {
            sum += A[i] * B[A.length-i-1];
        }

        return sum;
    }
}
  • 먼저 두 배열을 모두 정렬합니다.

  • 최솟값 구하기

각 배열이 a: {1, 2, 3}, b: {4, 5, 6}

이라고 가정했을 때 각 배열의 (작은 수 x 큰 수) 의 합이 최솟값이 됩니다.

$$ (1 * 6) + (2 * 5) + (3 * 4) = 28 $$

정확성 테스트

테스트 시간
테스트 1 〉 통과 (0.37ms, 73.3MB)
테스트 2 〉 통과 (0.54ms, 75.6MB)
테스트 3 〉 통과 (0.64ms, 74.6MB)
테스트 4 〉 통과 (0.48ms, 76MB)
테스트 5 〉 통과 (0.40ms, 73MB)
테스트 6 〉 통과 (0.42ms, 77.5MB)
테스트 7 〉 통과 (0.42ms, 75.4MB)
테스트 8 〉 통과 (0.58ms, 78.5MB)
테스트 9 〉 통과 (0.56ms, 73.2MB)
테스트 10 〉 통과 (0.39ms, 81.4MB)
테스트 11 〉 통과 (0.42ms, 77.1MB)
테스트 12 〉 통과 (0.45ms, 79MB)
테스트 13 〉 통과 (0.39ms, 77.4MB)
테스트 14 〉 통과 (0.34ms, 75.7MB)
테스트 15 〉 통과 (0.37ms, 73.3MB)
테스트 16 〉 통과 (0.38ms, 71.8MB)

효율성 테스트

테스트 시간
테스트 1 〉 통과 (2.29ms, 52.3MB)
테스트 2 〉 통과 (2.21ms, 52.7MB)
테스트 3 〉 통과 (2.49ms, 52.6MB)
테스트 4 〉 통과 (1.97ms, 52.1MB)

반응형