남우는 나무를 2개 심으려고 합니다. 나무는 주어진 n개의 위치 중 서로 다른 두 곳에 꼭 심어야만 하며, 1번 위치부터 n번 위치까지 각 위치마다 토양의 비옥함에 해당하는 값 Fi가 주어졌을 때 남우는 나무가 심어지는 두 위치 a, b에서 토양의 비옥함의 곱인 Fa ∗ Fb가 최대가 되도록 나무를 심으려고 합니다. 남우가 적절한 위치에 나무를 심을 수 있도록 하는 프로그램을 작성해보세요.
만약 n이 3이고 다음과 같이 토양의 비옥함이 순서대로 5, -1, 4인 경우 5, 4 위치에 나무를 심으면 비옥함의 곱이 20으로 최대가 됩니다.
const readline = require('readline')
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
let array = [];
let sum = [];
rl.on('line', (input) => {
array = input.split(" ").map((e) => +e);
})
rl.on('close', () => {
if(array.length === 2) {
console.log(array[0] * array[1]);
} else {
for(let i = 0; i < array.length - 1; i++) {
for(let j = i + 1; j < array.length; j++) {
sum.push(array[i] * array[j]);
}
}
console.log(Math.max(...sum));
}
process.exit();
})
굉장히 비효율적인 코드같당....😥
비옥함을 담은 배열을 정렬한 후, 맨 앞 두 수의 곱과 맨 뒤 두 수의 곱을 비교하는 방식
훨씬 간결하다...👍🏻
const readline = require('readline')
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
let array = [];
let sum = []
rl.on('line', (input) => {
array = input.split(" ").map((e) => +e);
})
rl.on('close', () => {
const temp = array.sort((a, b) => a - b);
const len = array.length;
console.log(Math.max(temp[0]*temp[1], temp[len-2]*temp[len-1]));
process.exit();
})