Skip to main content

11. [Java] 삼각형의 완성조건(2): case2는 왜 longer - shorter인가?

1. 문제 요약


2. 정수 범위 공식

  • x ∈ (longer - shorter, longer + shorter)
  • 즉, 가능한 정수 x의 범위는
  • longer - shorter + 1 ≤ x ≤ longer + shorter - 1

코드

import java.util.*;
 
class Solution {
    public int solution(int[] sides) {
        Arrays.sort(sides); // 배열 오름차순 정렬
        int shorter = sides[0];
        int longer = sides[1];
        
        // case1: x가 가장 긴 변일 때 -> x < a + b
        int case1 = longer + shorter - 1; 
        
        // case2: x가 짧거나 중간인 경우 -> x > max - min
        int case2 = longer - shorter;
        
        return case1 - case2;
    }
}

3. longer - shorter + 1이 아닌 이유

  • case2 = longer - shorter인가?
  • case2는 가능한 x의 시작값이 아님
  • 실제 시작값은 longer - shorter + 1
  • 하지만 정수 개수를 계산할 때는 시작값 - 1을 기준으로 계산해야 하므로
  • case2 = longer - shorter로 설정하는 것이 정확함

4. 예시

  • 입력: sides = [3, 6]
  • 가능한 x: 4, 5, 6, 7, 8 → 총 5개
  • 계산:
    case1 = 3 + 6 - 1 = 8
    case2 = 6 - 3 = 3
    answer = 8 - 3 = 5 ✅

요약

  • case2정수 개수 계산용 보조값
  • 실제 시작값보다 1 작게 설정되어야 하므로 +1이나 -1 필요 없음
  • 수식 하나로 정확히 계산 가능
  • (shorter + longer - 1) - (longer - shorter)