본문 바로가기
Algorithm/Programmers

[Programmers] Lv.0 | 삼각형의 완성조건 (2) | Java

by unknownomad 2025. 9. 29.

문제

https://school.programmers.co.kr/learn/courses/30/lessons/120868

 

 

풀이

class Solution {
    public int solution(int[] sides) {
        int answer = 0;
        
        int a = sides[0];
        int b = sides[1];
        
        int min = Math.abs(a - b) + 1;
        int max = (a + b) - 1;
        
        answer = max - min + 1;
        return answer;
    }
}

참고

🔺 삼각형의 조건 공식 증명: (|a - b| < c < a + b)

|a - b| < c < a + b

 

 

✅ 삼각형이 되기 위한 조건: 삼각형 부등식

삼각형을 이루기 위한 기본 조건은 다음 3가지다:

  1. ( a + b > c )
  2. ( a + c > b )
  3. ( b + c > a )

이 세 가지는 동시에 모두 만족해야 한다.

 

✅ 각 식을 (c) 중심으로 정리해보면:

  1. ( a + b > c ) ⟶ ( c < a + b ) ✅
  2. ( a + c > b ) ⟶ ( c > b - a )
  3. ( b + c > a ) ⟶ ( c > a - b )

 

✅ 두 번째, 세 번째 조건을 합치면?

  • ( c > b - a )
  • ( c > a - b )

이 두 조건을 모두 만족해야 하므로, c는 둘 중 더 큰 값보다 커야 함

c > max(a - b, b - a) = |a - b|

 

 

✅ 최종적으로 정리하면:

  • ( c > |a - b| )
  • ( c < a + b )
|a - b| < c < a + b

이 공식이 우리가 원하는 세 번째 변 c의 범위가 된다!

 

 

✅ 예를 들어 (a = 3), (b = 6)이라면:

  • ( |a - b| = 3 )
  • ( a + b = 9 )

따라서 3 < c < 9

가능한 정수 값: 4, 5, 6, 7, 8 → 총 5개

 

✅ 실제 활용: 가능한 정수 개수 구하기

int a = 3;
int b = 6;

int min = Math.abs(a - b) + 1;
int max = a + b - 1;

int count = max - min + 1;
if (count < 0) count = 0; // 삼각형 불가능한 경우

 

✅ 마무리

 

삼각형의 세 번째 변의 조건

(|a - b| < c < a + b)

은 삼각형 부등식을 c 중심으로 정리해서 나온 공식이다.

이 범위 안에 있는 정수 개수를 구하면, 삼각형을 만들 수 있는 모든 경우의 수를 알 수 있다.


최소값 ~ 최대값 사이 개수 구하기

코드 예시

int min = Math.abs(a - b) + 1; // |a - b| + 1
int max = a + b - 1;           // a + b - 1
int count = max - min + 1;
  • min은 최소 가능한 정수값 (열린 구간이니까 +1)
  • max는 최대 가능한 정수값 (열린 구간이니까 -1)
  • count = max - min + 1 은 정수 개수 구하는 공식

 

 

📌 핵심 정리

목적 왜 그렇게 하는가
min = a - b
max = a + b - 1 < 부등식이니까 최대값보다 1 작은 정수까지만 포함
count = max - min + 1 min과 max 둘 다 포함하는 정수 개수를 세려면 +1 필요

 

 

🧠 공식으로 다시 정리하면

개수 = (최대값 - 최소값) + 1

댓글