백준 1026 / 보물

dogit·2021년 8월 7일
0

백준문제

목록 보기
48/67

문제

풀이

설명

길이가 N인 배열 A와 B의 원소값을 곱하여 만들어지는
함수 S의 최소의 값을 구하는 문제이다
단, S의 최소값을 구하기 위해 A의 수는 재배열 할 수 있지만 B값은 재배열 할 수 없다.

S의 최소값을 만들기 위해서는 a[]의 가장 큰 수, b[]의 가장 작은 수를 서로 매칭하여 곱해야한다.
따라서 a[]와 b[]를 오름차순하여 a의 첫 인덱스와 b의 마지막 인덱스를 곱하여 반복하거나
a를 오름차순, b를 내림차순으로 하여 같은 인덱스끼리 곱하여 sum을 구한다.

코드

import java.util.Arrays;
import java.util.Scanner;

public class Num1026 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		int a[] = new int[n];
		int b[] = new int[n];
		
		for(int i=0; i<n; i++) {
			a[i] = sc.nextInt();
		}
		for(int i=0; i<n; i++) {
			b[i] = sc.nextInt();
		}
		
		Arrays.sort(a);
		Arrays.sort(b);
		
		int sum = 0;
		for(int i=0; i<n; i++) {
			sum += a[i] * b[n-i-1];
		}
		System.out.println(sum);
	}
}

코드설명

참고 :
출처 : https://www.acmicpc.net/problem/1026

profile
느리더라도 꾸준하게

0개의 댓글