프로그래머스/Lv. 0(코딩테스트 입문)

[프로그래머스 코딩테스트] 삼각형의 완성조건 (2)(Java)

Sigfriede 2023. 5. 24. 01:10

  문제 설명

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

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

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

 

  제한사항

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

 

  입출력 예

sides result
[1, 2] 1
[3, 6] 5
[11, 7] 13
class Solution {
    public int solution(int[] sides) {
        int answer = 0;
        int max = Math.max(sides[0], sides[1]);
        int min = Math.min(sides[0], sides[1]);
        
        for (int i = max - min; i < max; i++) {
            answer++;
        }
        for (int i = max + min - 1; i > max; i--) {
            answer++;
        }
        return answer;
    }
}

  max와 min 변수를 생성합니다. 각각 Math 클래스의 max와 min 메소드를 이용하여 주어진 두 변의 길이 중에서 긴 쪽과 짧은 쪽을 구분합니다. 이 문제에서 집중해야 할 점은 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작다는 부분입니다.

  for문이 두 번 순회합니다. 가장 긴 변이 배열의 원소로 주어질 때와, 나머지 한 변이 가장 긴 변일 때를 구분하여 풀이했습니다.

  첫 번째 for문에서는 가장 긴 변이 배열의 원소로 주어질 때, 즉 max가 가장 긴 변일 때에 해당합니다. i가 max에서 min을 뺀 값에서부터 시작하여 max값까지 순회합니다. 조건에 해당할 때 answer가 1씩 증가합니다.

  두 번째 for문에서는 나머지 한 변이 가장 긴 변일 때 해당합니다. i가 max와 min을 더하고 1을 뺀 값에서부터 시작하여 i가 max보다 큰 동안 i가 1씩 감소합니다. 조건에 해당할 때 answer가 1씩 증가합니다.