1) 문제 번호 : 1026번
2) 문제 출처
3. 입력
첫째 줄에 N이 주어진다.
둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고,
셋째 줄에는 B에 있는 수가 순서대로 주어진다.
N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거나 같은 음이 아닌 정수이다.
4. 출력
첫째 줄에 S의 최솟값을 출력한다.
5. 풀이
- 배열 A의 원소에서 가장 작은 값과 배열 B에서 가장 큰 값을 곱하여 sum을 최소로 만들면 된다.
- 그래서, 이 문제를 푸는 방법은 배열 A와 B를 오름차순하여 A의 첫 인덱스와 B의 마지막 인덱스를 곱하여 반복하거나 / 배열 A를 오름차순, 배열 B를 내림차순으로 하여 같은 인덱스끼리 곱하여 sum을 구하면 된다
(참고)
6. 제출 코드
import java.lang.reflect.Array;
import java.util.*;
public class No_1026 {
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);
}
}
'알고리즘 > baekjoon' 카테고리의 다른 글
[BaekJoon 알고리즘] 백준 1008번 자바 (0) | 2021.04.25 |
---|---|
[BaekJoon 알고리즘] 백준 1001번 자바 (0) | 2021.04.25 |
[BaekJoon 알고리즘] 백준 1000번 자바 (0) | 2021.04.25 |