[프로그래머스/Java] Lv.0 삼각형의 완성조건 (2)

febCho·2024년 5월 27일
0

코딩테스트

목록 보기
206/253
post-thumbnail

문제

선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.

  • 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.

삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요.

- 제한사항

  • sides의 원소는 자연수입니다.
  • sides의 길이는 2입니다.
  • 1 ≤ sides의 원소 ≤ 1,000

풀이

경우의 수는 크게 2가지. 주어진 sides 중 큰 값이 가장 긴 변이거나, 찾아야 하는 나머지 한 변이 가장 긴 변이거나. 이를 확인하기 위해 우선 둘중 큰 값과 작은 값을 Math의 메서드로 찾아 변수에 각각 대입해 주었다.

다음으로는 경우의 수에 맞게 범위를 지정해 주어야 했다. sides 중 큰 값이 가장 긴 변인 경우에는 큰 - 작 < x <= 큰이 되고, x가 가장 긴 변인 경우엔 큰 <= x <큰 + 작이 된다. 이때 x의 범위에 겹치는 값이 존재할 수도 있을 것 같아서 중복을 허용하지 않는 set 객체를 사용했고, 개수 반환은 size() 메서드를 사용했다.

import java.util.HashSet;
import java.util.Set;

class Solution {
    public int solution(int[] sides) {
        Set<Integer> counts = new HashSet<>();
        
        int Max = Math.max(sides[0], sides[1]);
        int Min = Math.min(sides[0], sides[1]);
        
        for(int i=Max - Min + 1; i<=Max; i++){
            counts.add(i);
        }
        
        for(int i=Max; i<Max + Min; i++){
            counts.add(i);
        }
        
        return counts.size();
    }
}

결과

profile
Done is better than perfect.

0개의 댓글