반응형

문제

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

입력

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

출력

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

 

해설

먼저 피타고라스의 정리를 한번 보고 오실까요?

https://ko.wikipedia.org/wiki/%ED%94%BC%ED%83%80%EA%B3%A0%EB%9D%BC%EC%8A%A4_%EC%A0%95%EB%A6%AC

 

피타고라스 정리 - 위키백과, 우리 모두의 백과사전

피타고라스 정리: 두 직각변에 얹힌 두 정사각형의 넓이의 합은 빗변에 얹힌 정사각형의 넓이와 같다. 기하학에서, 피타고라스 정리(문화어: 세평방의정리, 영어: Pythagorean theorem, Pythagoras's theorem

ko.wikipedia.org

 

피타고라스 정리는 간단하게 정리하면

 

a^2+b^2 = c^2

입니다!

 

따라서 주어신 3개의 변중에 빗변(c)을 찾고,

 

나머지 두 변의 제곱 값을 더한 값이 빗변의 제곱과 같은지만 확인 하면 되는 간단한 문제입니다!

 

바로 코드로 넘어갈게요.

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var fs = require('fs');
var inputs = fs.readFileSync('/dev/stdin').toString().split('\n');
 
for(let line of inputs) {
  let values = line.split(' ').map(el => parseInt(el));
 
  if(values[0=== 0break;
  // 정렬을 하는 이유는 제일 큰 숫자가 빗변이기 때문에.
  values.sort((a, b) => {
    return a - b;
  });
 
  // a^2+b^2=c^2이 성립하여야 직각이다.
  if((values[0* values[0]) + (values[1* values[1]) === (values[2* values[2])) {
    console.log("right")
  } else {
    console.log("wrong")
  }
}
cs
반응형

+ Recent posts