OJ
[BOJ] 1026 보물 (JAVA)
P3PP4
2023. 1. 4. 10:00
https://www.acmicpc.net/problem/1026
1026번: 보물
첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거
www.acmicpc.net
문제에선 B에 있는 수를 재배열하지 말라고 써놨지만, 배열 A와 B를 정렬하고 풀면 쉽게 풀 수 있습니다.
정렬된 배열 A의 첫 번째 원소 * 정렬된 배열 B의 마지막 원소로 시작해서 서로 반대 방향으로 진행하면서 더해줬습니다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] a = new int[N];
int[] b = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for (int i = 0; i < N; i++) {
a[i] = Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine(), " ");
for (int i = 0; i < N; i++) {
b[i] = Integer.parseInt(st.nextToken());
} // end of input
Arrays.sort(a);
Arrays.sort(b);
int result = 0;
for (int i = 0; i < N; i++) {
result += a[i] * b[N - i - 1];
}
System.out.print(result);
}
}