문제

컴퓨터를 이용하면 수학 계산이 조금 쉬워진다. 다음과 같은 예를 살펴보자. 세 변의 길이가 a, b, c(c는 빗변)이면서 a2+b2=c2를 만족하는 삼각형을 직각삼각형이라고 한다. 이 공식은 피타고라스의 법칙이라고 한다.

직각 삼각형의 두 변의 길이가 주어졌을 때, 한 변의 길이를 구하는 프로그램을 작성하시오.

 

 

입출력 예시

 

해결

const fs = require('fs');
const { start } = require('repl');
const stdin = (process.platform === 'linux'
    ? fs.readFileSync('/dev/stdin').toString()
    : `6 -1 6
3 4 -1
-1 2 7
5 -1 3
0 0 0` 
).match(/[^\r\n]+/g);

const input = (() => {
let line = 0;
  return () => stdin[line++];
})();

let i = 1;
let answer=[];

while (true) {
  const s = input().split(' ').map(Number)

  if (s[0] === 0) break;

  const area = s.indexOf(-1)
  const arr = ['a','b','c']

  if (arr[area] == 'a') {
    const sq = (s[2]**2) - (s[1]**2)
    const line = (Math.sqrt(sq)).toFixed(3)
    
    if (line < s[2]  && line != 0){
      answer.push(`Triangle #${i}\n${arr[area]} = ${line}`)
    } else {
      answer.push(`Triangle #${i}\nImpossible.`)
    } 
  }

  if (arr[area] == 'b') {
    const sq = (s[2]**2) - (s[0]**2)
    const line = (Math.sqrt(sq)).toFixed(3)
    
    if (line < s[2] && line != 0){
      answer.push(`Triangle #${i}\n${arr[area]} = ${line}`)
    } else {
      answer.push(`Triangle #${i}\nImpossible.`)
    } 
  }

  if (arr[area] == 'c') {
    const sq = (s[0]**2) + (s[1]**2)
    const line = (Math.sqrt(sq)).toFixed(3)
    
    if (line > s[2] && line != 0){
      answer.push(`Triangle #${i}\n${arr[area]} = ${line}`)
    } else {
      answer.push(`Triangle #${i}\nImpossible.`)
    } 
  }

  i++;
}

console.log(answer.join('\n\n'))

'개발 공부 > Algorithm' 카테고리의 다른 글

[백준/Node.js] 오늘도 졌다  (0) 2023.03.23
[백준/Node.js] 블랙잭  (0) 2023.03.22
[백준/Node.js] 팬그램  (0) 2023.03.20
[백준/Node.js] 탄산 음료  (0) 2023.03.17
[백준/Node.js] 팰린드롬수  (0) 2023.03.16

+ Recent posts