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;
}