[백준 알고리즘] 1026번 보물 (java)

Ash·2020년 8월 16일
0
post-custom-banner

풀이방법

A와 B를 곱해 최솟값을 구하기 위해서는
B배열 가장 큰 숫자의 인덱스에 A배열 중 가장 작은 숫자를,
B배열 가장 작은 숫자의 인덱스에 A배열 중 가장 큰 숫자를 위치시킨다.

따라서 A를 오름차순으로, B를 내림차순으로 정렬하여 곱하면 최솟값을 구할 수 있다.

소스코드

package day_200816;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

// 보물 
public class Main {

	public static void main(String[] args) throws Exception {
		int answer = 0;
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		
		ArrayList<Integer> A = new ArrayList<Integer>();
		ArrayList<Integer> B = new ArrayList<Integer>();
		
		for(int i=0; i<N; i++) A.add(sc.nextInt());
		for(int i=0; i<N; i++) B.add(sc.nextInt());
		
		Collections.sort(A);
		Collections.sort(B);
		Collections.reverse(B);
		
		for(int i=0; i<N; i++) answer += A.get(i) * B.get(i);
		System.out.println(answer);
		
	}

}
profile
기록남기기👩‍💻
post-custom-banner

0개의 댓글