길이가 서로 다른 A, B, C 세 개의 막대로 삼각형을 만들 수 있으면
“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";
}
}
console.log(solution(5, 33, 36));
console.log(solution(1, 32, 39));
Math.max
내장 객체로 세 변의 길이 중
가장 긴 길이의 값을 long 변수에 담는다.
세 길이를 모두 더한 값을 total 변수에 담고,
모두 더한 값과 가장 긴 길이의 값을 빼면
나머지 두 길이의 값을 oper 변수에 담는다.
그럼 이 나머지 두 길이의 값이 들어있는 oper 변수와
가장 긴 길이의 값인 long 변수를 비교해서
if(oper > long)
두 길이의 값이 가장 긴 길이보다 길다면, YES 가 출력되고,
가장 긴 길이의 값이 더 길다면, 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");
}
console.log(solution(5, 33, 36));
console.log(solution(1, 32, 39));
(조건 ? 참 : 거짓)
if 조건문을 삼항 연산자로 바꿔 작성하면 코드가 간결해진다.
return (oper > long ? "YES" : "NO");
oper > long
위 조건 식이 참이라면 "YES" 로 함수의 결과값이 반환되고,
위 조건 식이 거짓이라면 "NO" 로 함수의 결과값이 반환된다.
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");
}
console.log(solution(5, 33, 36));
console.log(solution(1, 32, 39));
가장 긴 변의 길이를 구하기 위해서는
a 와 b 를 비교, a 와 c 를 비교, b 와 c 를 비교해야 하는데,
삼항 연산자를 사용하여 코드의 가독성을 높일 수 있다.
long = (a < b ? b : a);
a 의 값보다 b 의 값이 긴 경우 가장 긴 변의 변수 long에 b 의 값이 담기고,
a 의 값이 길다면 변수 long 에 a 의 값이 담긴다.
long = (long < c ? c : long);
위 과정에서 가장 긴 변의 변수가 a 또는 b 의 값이 들어있다면,
c 의 값과 비교하여
c 의 값이 더 길다면 변수 long 에 c 의 값을 담고,
long 변수에 들어있는 변수의 길이가 더 길다면
원래의 long 변수 값을 담는다.
long = (long < c ? c) // syntax error
삼항 연산자의 값이 거짓(false)인 경우
본래 long 변수의 값과 같기 때문에 이를 생략하려고
true 의 값만 적는다면 문법에러가 발생한다.