[BOJ] 1026번 - 보물

🔥 접근

  1. 직관적으로 A의 가장 수를 B의 큰 수의 인덱스에 위치시키는 방법으로 그리디 알고리즘을 적용한다
  2. 결국 최솟값만 구하면 되는 문제이므로 A의 위치를 재배열해서 대응시키나, A와 B를 각각 오름차순, 내림차순으로 정렬하여 계산하나 답은 똑같이 나올 것
  3.  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);

🔗 관련 링크

'알고리즘 > 백준' 카테고리의 다른 글

[BOJ] 2217번 - 로프  (0) 2025.04.10
[BOJ] 1931번 - 회의실 배정  (0) 2025.04.10
[BOJ] 11047번 - 동전 0  (0) 2025.04.10
[BOJ] 9466번 - 텀 프로젝트  (0) 2025.04.09
[BOJ] 2206번 - 벽 부수고 이동하기  (0) 2025.04.08