const fs = require("fs");
const heights = fs.readFileSync("/dev/stdin").toString().trim().split("\n").map(Number);
let dwarf = null;
for (let i = 0; i < heights.length - 1; i++) {
for (let j = i + 1; j < heights.length; j++) {
const sum = heights.reduce((acc, curr) => {
return acc + curr;
}, 0);
if (sum - heights[i] - heights[j] === 100) {
dwarf = heights.filter(
(height) => height !== heights[i] && height !== heights[j]
);
break;
}
}
if (dwarf) {
break;
}
}
console.log(dwarf.sort((a, b) => a - b).join("\n"));
연산에서 제외할 두 명의 난쟁이를 중첩 for문으로 선택한다.
전체 합 - 난쟁이 1 - 난쟁이 2 === 100
이 되어야 문제 조건을 만족하는데
이 때, 선택된 두 난쟁이를 제외한 나머지 난쟁이들만 추려서 내부 for문을 빠져 나간다.
외부 for문까지 나가서 정답을 출력해야하는데,
변수 dwarf
가 null
이 아닌 다른 값을 가지는 경우는 문제를 맞췄을 때이므로,
이 때, 외부 for문을 빠져 나간다.
필자는 입력값을 받아올 때 trim()
을 안해서 엄청 헤맸다.