


다각형의 변의 길이 조건을 적용하는 것이 포인트!
N으로 막대기 개수, start로 시작점, end로 끝점, lines 배열로 막대기들의 길이를 저장한다.distance에 저장한다. (피타고라스 정리를 활용한다.)distance와 막대기의 길이가 같아야만 한다.distance를 포함한 가장 긴 변의 길이가 나머지 길이의 합보다 작거나 같아야한다. 따라서 distance를 lines 배열에 넣고, max에 최댓값을 저장한 다음, 최댓값을 뺀 나머지 값들의 합을 최댓값과 비교한다.const input = require("fs")
.readFileSync(process.platform === "linux" ? "/dev/stdin" : "./input.txt")
.toString()
.trim()
.split("\n")
.map((el) => el.split(" "));
// 막대기 1개 = 점과 점 사이의 거리(선)
// 막대기 2개 이상: 가장 긴 변의 길이 <= 나머지 길이의 합
const N = Number(input[1][0]); // 막대기 개수
const start = input[0].slice(0, 3).map(Number); // 시작점
const end = input[0].slice(3, 6).map(Number); // 끝점
const lines = input[2].map(Number); // 막대기들
const distance = Math.sqrt((end[0] - start[0]) **2 + (end[1] - start[1])**2 + (end[2] - start[2])**2);
if(N === 1){
if(lines[0] === distance){
console.log("YES");
}else{
console.log("NO");
}
} else{
lines.push(distance);
const max = Math.max(...lines);
const restLines = lines.filter((line)=> line !== max);
const restSum = restLines.reduce((acc, cur) => acc+cur, 0);
if(max <= restSum){
console.log("YES");
}else{
console.log("NO");
}
}
🤔 소감