[Programmers] 최솟값 만들기 - 연습문제

동민·2021년 3월 11일
import java.util.Arrays;
import java.util.Comparator;

// 최솟값 만들기 - 연습문제
public class MakeMin {
	// A는 오름차순 B는 내림차순으로 정렬하여 같은 인덱스의 값끼리 곱해서 더하는 값이 최솟값이다.
	public int solution(int[] A, int[] B) {
		int answer = 0;

		Integer[] b = new Integer[B.length];
		for (int i = 0; i < b.length; i++) {
			b[i] = B[i];
		}
		Arrays.sort(A);
		Arrays.sort(b, new Comparator<Integer>() {
			@Override
			public int compare(Integer o1, Integer o2) {

				if (o1 > o2) {
					return -1;
				} else if (o1 < o2) {
					return 1;
				}
				return 0;
			}

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

	public static void main(String[] args) {

		MakeMin s = new MakeMin();

		int[] a1 = { 1, 4, 2 };
		int[] b1 = { 5, 4, 4 };
		int[] a2 = { 1, 2 };
		int[] b2 = { 3, 4 };

		System.out.println(s.solution(a1, b1));
		System.out.println(s.solution(a2, b2));

	}

}
profile
BE Developer

0개의 댓글