- A배열과 B배열을 오름차순으로 정렬하였다.
- A배열은 최소값부터 B배열은 최대값부터 곱해서 sum에 더해줬다.
- 문제에서는 B 배열을 재배열하지 마라고 하였는데 다른 사람들은 어떻게 풀었는지 보았는데 다들 정렬을 하였길래 나도 그렇게 하였다.
// 백준 Silver4 - 1026(보물)
// 문제링크: https://www.acmicpc.net/problem/1026
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int sum = 0;
int A[] = new int[num];
int B[] = new int[num];
for(int i=0; i<A.length; i++) {
A[i] = sc.nextInt();
}
for(int i=0; i<A.length; i++) {
B[i] = sc.nextInt();
}
Arrays.sort(A); // A배열 정렬
Arrays.sort(B); // B배열 정렬
for(int i=0; i<num; i++) { // sum에 A배열은 최소값부터
sum += A[i]*B[num-1-i]; // B배열은 최대값부터 곱해서 더하기
}
System.out.println(sum);
}
}
그동안 정보처리 기사 실기 및 프로젝트 준비 때문에 알고리즘을 한동안 안했는데 다시 감을 잡기 위해서 비교적 쉬운 문제를 풀게 되었다. 앞으로는 꾸준하게 문제를 풀도록 노력해야겠다.