본문 바로가기
알고리즘 문제풀이/프로그래머스

[프로그래머스] 최솟값 만들기 - 자바(Java)

by jeonghaemin 2022. 1. 8.
728x90

문제

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

풀이

두 배열 중 하나는 오름차순 정렬, 남은 하나는 내림차순 정렬한 뒤 같은 인덱스끼리 곱한 합이 최솟값이다.

import java.util.*;

class Solution {
    public int solution(int []A, int []B) {
        int answer = 0;

        //reverseOrder() 를 사용하려면 래퍼 타입이어야하기 때문에 int[] -> Integer[] 변환
        //boxed() : 프리미티브 타입을 래퍼 타입으로 박싱한 스트림을 만들어준다.
        Integer[] BB = Arrays.stream(B).boxed().toArray(Integer[]::new);

        Arrays.sort(A);
        Arrays.sort(BB, Collections.reverseOrder());

        for(int i = 0; i < A.length; i++) {
            answer += A[i]*BB[i];
        }

        return answer;
    }
}

댓글