https://www.acmicpc.net/problem/1026
이 문제는 두 배열이 주어지고 두 배열간의 곱한 값을 더한 값이 최소가 되게 하는 문제이다.
핵심은 곱하는 두 수가 둘 다 큰 수이면 수가 많이 커지니까 이를 적절하게 조합하는 것이다. 가장 큰 수에는 가장 작은수를 곱하는 과정을 하기 위해서 두 배열을 다 정렬한 후 첫번째 배열은 앞에서부터, 두번째 배열은 뒤에서부터 곱해서 더해나가면 답을 구할 수 있다.
import java.util.*;
import java.io.*;
class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
int[] arr1 = new int[n];
int[] arr2 = new int[n];
for(int i = 0;i<n;i++) {
int a = Integer.parseInt(st.nextToken());
arr1[i] = a;
}
st = new StringTokenizer(br.readLine());
for(int i = 0;i<n;i++) {
int a = Integer.parseInt(st.nextToken());
arr2[i] = a;
}
Arrays.sort(arr1);
Arrays.sort(arr2);
int cnt = 0;
for(int i = 0;i<n;i++) {
cnt+= (arr1[i]*arr2[n-i-1]);
}
System.out.println(cnt);
}
}
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
백준 [자바 java] 11399 : ATM (0) | 2023.07.23 |
---|---|
백준 [자바 java] 1541 : 잃어버린 괄호 (0) | 2023.07.23 |
백준 [자바 java] 2839 : 설탕배달 (0) | 2023.07.23 |
백준 [java 자바] 1092 : 배 (0) | 2023.07.18 |
백준 [자바 java] 1461 : 도서관 (0) | 2023.07.15 |