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

namkun·2022년 12월 28일
0

코딩테스트

목록 보기
53/79

문제 링크

최솟값 만들기

풀이

  • 처음에는 순열을 생각했다. 그러나 머리를 좀 더 굴려보면 더 쉽게 풀 수 있다는 것을 알게된다.
  • 두 배열에서 하나는 오름차순 정렬, 하나는 내림차순 정렬로 해준 뒤에 순서대로 곱해주면 최솟값을 얻게 된다.
  • 정렬은 본인 마음대로 Arrays.sort를 쓰던 우선순위 큐를 쓰건 맘대로 하면 된다.
import java.util.Collections;
import java.util.PriorityQueue;
import java.util.Arrays;

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

		// Arrays.sort 사용방법
        Arrays.sort(A);
        Arrays.sort(B);
        
        for(int i = 0; i < A.length; i++){
            answer += (A[i] * B[B.length - i - 1]);
        }
        
        // 우선순위 큐 사용방법
//        PriorityQueue<Integer> aQueue = new PriorityQueue<>();
//        PriorityQueue<Integer> bQueue = new PriorityQueue<>(Collections.reverseOrder());
//
//        for(int i = 0; i < A.length; i++){
//            aQueue.add(A[i]);
//            bQueue.add(B[i]);
//        }
//
//        while (!aQueue.isEmpty()){
//            answer += aQueue.poll() * bQueue.poll();
//        }

        return answer;
    }
}
  • 괜히 복잡하게 생각하면 할수록 더 안풀리는 것 같다.
profile
개발하는 중국학과 사람

0개의 댓글