신입 개발자에서 시니어 개발자가 되기까지

[백준 nodeJS] 4153 직각삼각형 본문

javascript/알고리즘

[백준 nodeJS] 4153 직각삼각형

Jin.K 2022. 10. 27. 22:35

고심했거나 헤맸던 문제는 아니지만, 문제를 푸는 도중에 목도한 에러가 공부가 되어서 포스팅 해본다.

문제

과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오.

입력

입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.

출력

각 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다.

로직

피타고라스의 정리를 이용한다. 이 문제의 핵심은 가장 긴 빗변의 길이를 어떻게 알아내는가인 듯 하다.
나는 오름차순으로 정렬해서 알아냈다.

코드

const input = require("fs").readFileSync("example.txt").toString().trim();
let triangle = input.split("\n");
let newArr = [];
let result = [];
for (let i = 0; i < triangle.length - 1; i++) {
  makeArray(triangle[i]);
}

function makeArray(string) {
  let array = string.split(" ").map(Number);
  newArr.push(array);
}
for (let i = 0; i < newArr.length; i++) {
  let eachTriangle = newArr[i].sort((a, b) => a - b);
  if (eachTriangle[2] ** 2 === eachTriangle[1] ** 2 + eachTriangle[0] ** 2) {
    result.push("right");
  } else {
    result.push("wrong");
  }
}
console.log(result.join("\n"));