선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
- 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
sides
의 원소는 자연수입니다.sides
의 길이는 2입니다.sides
의 원소 ≤ 1,000function solution(sides) {
let long = Math.max(sides[0], sides[1]);
let short = Math.min(sides[0], sides[1]);
let possible = [];
for (let i = long - short + 1; i <= long; i++) {
possible.push(i);
}
for (let i = long + 1; i < long + short; i++) {
possible.push(i);
}
return possible.length;
}
먼저 Math의 max함수와 min함수로 sides에서 긴 쪽과 짧은 쪽을 구했다.
그리고 도는 포문은 차례대로 long 값이 가장 긴 변일 경우, 나머지 변이 가장 긴 변일 경우를 구해서 배열에 넣는다.
그리고 배열의 길이를 구해서 반환한다.
for문의 조건을 열심히 구했음. 근데 풀고 나니까 굳이 for문을 두 개로 나눌 필요가 없던 것 같다.
for (let i = long-short+1; i< long+short; i++) {
possible.push(i)
}
그래서 하나로 합쳤더니 이거도 통과함!
function solution(sides) {
return Math.min(...sides)*2-1
}
ㅖ?
이 풀이가 제대로 된 건지는...? 잘 모르겠다. 답은 나오나본데... 이해 못했음. 정확한 풀이는 아니라는 것 같은데...일단 넘어가겠음.
function solution(sides) {
let a = Math.min(...sides)
let b = Math.max(...sides)
let answer = 0
for(let i = 1 ; i < a+b ; i++){
let arr = [a,b,i].sort((a,b) => a-b)
let [q,w,e] = arr
if(q+w > e){
answer++
}
}
return answer;
}
깔끔한 풀이인 것 같다.