[알고리즘]삼각형 판별하기

전현정·2021년 11월 26일

알고리즘

목록 보기
12/18

문제

길이가 서로 다른 a,b,c 세 개의 막대 길이가 주어진다면 이 세 막대로 삼각형을 만들 수 있으면 yes, 아니면 no를 출력하세요.

입력예제

6 7 11

문제이해

삼각형을 만들기 위해선,
값이 작은 두 수의 합이 가장 큰 수보다 커야한다.

  • if문을 이용한 문제 풀이

📖 문제풀이

function solution(a,b,c){
  let answer="YES", max;
  let sum = a+b+c;
  if(a>b) max =a;
  else max =b
  if(c>max) max = c;
  if((sum - max)<=max) answer="NO"; //세 수의 합에서 가장 큰 수를 뺀다, 뺀 값이 max보다 같거나 작을 경우 answer=no를 출력

  return answer;
}

console.log(solutioN(6,7,11)

조건문 if

  • 가장 큰 수를 반환하는 Math.max()이용해서 가장 큰 수를 찾는다
  • 세 수를 더한 값을 total에 담고
  • total의 값에 long 변수의 값을 빼면 나머지 두 값을 알 수 있다
  • if문을 사용해서 두 수의 값이 가장 큰 수보다 크면 yes,아니면 no를 출력하도록 코드를 작성했다.
function solution(a,b,c){
let long = Math.max(a,b,c); //가장 큰 수 찾기
let total = a+b+c; 			// 세 수의 합
let oper = total - long;		//삼각형 완성 조건 찾기

if(oper > long){
    return "YES";
  } else {
    return "NO";
  }
}

조건문 리팩토링하기

function solution(a,b,c){
  let long = Math.max(a,b,c); //가장 큰 수 찾기
  let total = a+b+c; 			// 세 수의 합
  let oper = total - long;		//삼각형 완성 조건 찾기

  return (oper >long ? "YES" : "NO") //if문 삼항연산자로 변경
  
}

가장 긴 변의 길이를 삼항 연산자로

function solution(a,b,c){
  let long total = a + b + c;
  long = ( a < b ? b : a );
  long = ( long < c ? c : long );
  let oper = total - long;		//삼각형 완성 조건 찾기

  return (oper >long ? "YES" : "NO")
  
}

코드 해석

 long = ( a < b ? b : a );

a의 값 보다 b의 값이 긴 경우 가장 긴 변의 변수 long에 b가 담기고,
a의 값이 길다면 변수 long에 a가 담긴다.

long = ( long < c ? c : long );

그 다음 long에 담긴 수와 c 값을 비교해 둘 중 큰 값은 변수 long에 담는다.

profile
꾸준하기 위해 기록하는 개발자의 개발 일기

0개의 댓글