선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요.
sides의 원소는 자연수입니다.
sides의 길이는 2입니다.
1 ≤ sides의 원소 ≤ 1,000
각 선분이 a, b, c라고 할때 a + b > c 를 이용해야 할것같다.
입출력 예에서 주어진 sides 중 가장 긴변이 있는 경우와, 아닌 경우를 나눠서 생각해야함..
import java.util.Arrays;
class Solution {
public int solution(int[] sides) {
int answer = 0;
Arrays.sort(sides);
int min = sides[0];
int max = sides[1];
//삼각형의 완성 조건 a + b > c
//b가 제일 긴 변일 경우
for(int i = max - min + 1 ; i <= max ; i++){
answer++;
}
//c가 제일 긴 변일 경우
for(int i = max + 1 ; i <= min + max ; i++){
answer++;
}
return answer;
}
}
왜 값이 1씩 크게 나오는거지 범위 설정이 잘못됐나?
import java.util.Arrays;
class Solution {
public int solution(int[] sides) {
int answer = 0;
Arrays.sort(sides);
int min = sides[0];
int max = sides[1];
//삼각형의 완성 조건 a + b > c
//b가 제일 긴 변일 경우
for(int i = max - min + 1 ; i <= max ; i++){
answer++;
}
//c가 제일 긴 변일 경우
for(int i = max + 1 ; i < min + max ; i++){
answer++;
}
return answer;
}
}
오류는 c가 제일 긴 변인 경우 c는 a + b보다 작아야한다!
작거나 같은 경우도 포함되어서는 안된다.
어떤 수학공식을 이해해서 풀었다기보다는... 예제에 나온 수들을 보고
값이 나오도록 대입한 정도라서 완전히 이해하지 못했다...