🔥 접근
- 직관적으로 A의 가장 수를 B의 큰 수의 인덱스에 위치시키는 방법으로 그리디 알고리즘을 적용한다
- 결국 최솟값만 구하면 되는 문제이므로 A의 위치를 재배열해서 대응시키나, A와 B를 각각 오름차순, 내림차순으로 정렬하여 계산하나 답은 똑같이 나올 것
- 0~N 까지 반복문을 돌려 ASort와 BSort의 인덱스를 각각 곱하고 누적합 처리하여 답 도출
🧑💻 코드
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : 'input.txt';
const input = fs.readFileSync(filePath, 'utf8').toString().trim().split('\n');
const N = Number(input.shift());
const [A, B] = input.map((item) => item.split(' ').map(Number));
const ASort = A.sort((a, b) => a - b);
const BSort = B.sort((a, b) => b - a);
let answer = 0;
for (let i = 0; i < N; i++) {
answer += ASort[i] * BSort[i];
}
console.log(answer);
🔗 관련 링크