728x90
코드 힌트
- 목표:
- 두 배열의 원소를 재배열하여, 각 원소끼리 곱한 값들의 합이 최소가 되도록 계산하는 문제입니다.
- 정렬 방식:
- arr1은 오름차순으로 정렬하고, arr2는 내림차순으로 곱셈을 진행합니다. 이렇게 하면, 큰 값과 작은 값이 곱해져 전체 곱셈 결과를 최소화할 수 있습니다.
- 곱셈과 합산:
- arr1의 작은 값과 arr2의 큰 값을 곱해가며, 각 곱셈 결과를 result 변수에 누적하여 최소 값을 얻습니다.
- 배열 크기와 정렬:
- 배열의 크기 n을 입력받고, 두 배열을 각각 정수 배열로 변환한 후, 정렬을 수행한 뒤 대응하는 원소들을 곱합니다.
정답은 더보기 클릭
더보기
import java.util.*;
class Main {
public static void main(String[] args) {
int result = 0; // 결과값을 저장할 변수
Scanner in = new Scanner(System.in);
int n = Integer.parseInt(in.nextLine()); // 배열의 크기 n 입력 받기
int[] arr1 = new int[n]; // 첫 번째 배열
int[] arr2 = new int[n]; // 두 번째 배열
// 첫 번째 배열의 값들을 공백을 기준으로 분리하여 입력 받음
String[] inputArr1 = in.nextLine().split(" ");
// 두 번째 배열의 값들을 공백을 기준으로 분리하여 입력 받음
String[] inputArr2 = in.nextLine().split(" ");
// 입력받은 문자열 배열을 정수 배열로 변환
for (int i = 0; i < n; i++) {
arr1[i] = Integer.parseInt(inputArr1[i]);
arr2[i] = Integer.parseInt(inputArr2[i]);
}
// 첫 번째 배열을 오름차순 정렬
Arrays.sort(arr1);
// 두 번째 배열을 오름차순 정렬
Arrays.sort(arr2);
// 각 배열의 대응되는 원소의 곱을 계산하되, 두 번째 배열은 내림차순으로 접근
for (int i = 0; i < n; i++) {
result += arr1[i] * arr2[n-i-1]; // arr1의 i번째 원소와 arr2의 역순 원소의 곱을 결과에 더함
}
// 결과 출력
System.out.println(result);
}
}
728x90
'백준' 카테고리의 다른 글
[백준] 감소하는 수 (1038번) (0) | 2024.10.01 |
---|---|
[백준] 균형잡힌 세상 (4949번) (0) | 2024.09.23 |
[백준] 별 찍기 - 8 (0) | 2024.09.19 |
[백준] 북극곰은 괄호를 찢어 (25918번) (1) | 2024.09.13 |
[백준] 다음 소수 (4134번) (2) | 2024.09.04 |