https://www.acmicpc.net/problem/1026
1026번: 보물
첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거
www.acmicpc.net
본 문제는 A 배열과 B 배열에 있는 수들을 서로 곱한 값을 더하여 출력하는데 이 때 최솟값을 출력해야한다.
그렇게 하기 위해서는 B 배열의 높은 수는 A 배열의 낮은 수와 곱해야하고
B 배열의 낮은 수는 A 배열의 높은 수와 곱해야한다.
즉 A 배열은 내림차순, B 배열은 오름차순 정렬한 후 각각의 인덱스 값을 곱하여 더하면 최솟값이 출력된다.
코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
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(B);
Arrays.sort(A);
int sum = 0;
int idx = N-1;
for(int i=0;i<N;i++)
{
sum += A[idx]*B[i];
idx--;
}
System.out.println(sum);
}
}
'알고리즘 > 백준 풀이(그리디)' 카테고리의 다른 글
백준 14916번 - 거스름돈 (0) | 2024.01.23 |
---|---|
백준 1946번 - 신입 사원 (0) | 2024.01.19 |
백준 2217번 - 로프 (0) | 2024.01.18 |
백준 11047번 - 동전 0 (0) | 2024.01.16 |
백준 11399번 - ATM (0) | 2024.01.16 |