프로그래머스 : 삼각형의 완성조건 (2)

Digeut·2023년 3월 7일
0

프로그래머스

목록 보기
16/164

❔문제설명

선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 두 변의 길이가 담긴 배열 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보다 작아야한다!
작거나 같은 경우도 포함되어서는 안된다.
어떤 수학공식을 이해해서 풀었다기보다는... 예제에 나온 수들을 보고
값이 나오도록 대입한 정도라서 완전히 이해하지 못했다...

profile
개발자가 될 거야!

0개의 댓글