[LeetCode] Largest Perimeter Triangle

준규·2022년 10월 5일
0

숫자 배열 nums 가 주어질 때 넓이가 0이 아닌 삼각형을 만들 때 가장 둘레의 길이가 큰 경우의 둘레 값을 리턴하는 문제이다

삼각형의 경우 3변의 길이가 주어질 때 가장 긴 변 < 나머지 두변의 합 을 만족해야 삼각형이 만들어 질 수 있다

Example 을 보자

2번 예시의 경우 가장 긴변 = 2 , 나머지 두변의 합 = 2 이므로 삼각형이 만들어지지 않는다 그러므로 0이 리턴된다

const largestPerimeter = function (nums) {
  nums.sort((a, b) => b - a);

  for (let i = 0; i < nums.length - 2; i++) {
    let nums1 = nums[i];
    let nums2 = nums[i + 1];
    let nums3 = nums[i + 2];

    if (nums1 < nums3 + nums2) return nums1 + nums2 + nums3;
  }

  return 0;
};

nums 의 길이는 3보다 클 수 있으므로 nums를 내림차순으로 정렬을 하였다

그 다음 for 문을 돌면서 nums의 앞에서 부터 변수에 할당을 해주고 삼각형의 성립조건을 통과하는지 체크를 해주었다

만약 통과한다면 가장 넓이가 큰 삼각형인 경우이므로 세 변의 길이 합을 리턴해주면 되고 만약 통과 하지 못한다면 i값을 1씩 증가시켜 다음 삼각형 세변을 검사한다

만약 for문이 끝나도 리턴되지 않는다면 만들 수 있는 삼각형이 없는것이므로 0을 리턴해주었다

submit을 해보니

정답이었다!

profile
안녕하세요 :)

0개의 댓글