Computer Science/알고리즘

[JS] 직각삼각형인지 판단하는 알고리즘

mj73 2023. 4. 19. 05:47

문제

삼각형의 세 변을 입력받아 직각삼각형(pythagorean)인지 여부를 리턴해야 합니다.

 

 

주의사항

  • 삼각형의 각 세 변은 무작위로 입력됩니다.
  • 자바스크립트에서 x의 제곱(x squared)을 구하는 방법은 3가지 입니다. 세 가지 방법을 모두 사용해야 합니다.
  • arr.sort 사용은 금지됩니다.
  • 제곱을 구할 때는 입력으로 주어지는 변수를 그대로 사용해야 합니다.

 


풀이

피타고라스 정리에 의하면 직각삼각형은 제일 큰 변의 제곱은 나머지 두 변의 제곱의 합과 같다.

 

 

 

의사코드 (pseudocode)

1. 삼각형의 세 변의 값을 side1, side2, side3로 입력 받는다.

2. 각각의 변을 제곱한 값을 구한다.

3. side1이 큰 경우, side2가 큰 경우, side3가 가장 큰 경우를 나누어서 각각 피타고라스 정리를 이용해본다.

4. 세 가지 경우 중 하나라도 true면 true를 반환하고 해당 삼각형은 직각삼각형이다.

4-1. 세 가지 경우 모두 만족시키지 못하면 false이고 해당 삼각형은 직각삼각형이 아니다.

 

 

코드

function isPythagorean(side1, side2, side3) {
  const pow1 = side1 * side1;
  const pow2 = side2 ** 2;
  const pow3 = Math.pow(side3, 2);

  const case1 = pow1 === pow2+pow3;
  const case2 = pow2 === pow1+pow3;
  const case3 = pow3 === pow1+pow2;

  return case1 || case2 || case3;
}