삼각형을 만들 수 있는지 확인하기

자바스크립트 코딩테스트 문제로 numeric-validation 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.

today easy numeric-validation 함수명: canFormTriangle 제한 시간: 200ms

문제 설명

세 정수 a, b, c가 주어집니다. 이 세 값을 각각 변의 길이로 사용해 삼각형을 만들 수 있는지를 반환하는 canFormTriangle 함수를 작성하세요.

삼각형이 되려면 모든 변의 길이가 양수여야 하며, 가장 긴 변의 길이는 나머지 두 변의 길이의 합보다 작아야 합니다.

제한사항

  • a, b, c는 정수입니다.
  • 각 값은 0 이상 1,000,000 이하입니다.
  • 세 변으로 삼각형을 만들 수 있으면 true, 만들 수 없으면 false를 반환합니다.
  • 두 짧은 변의 합이 가장 긴 변과 정확히 같으면 삼각형이 아니므로 false를 반환합니다.

예시

  • 입력: a = 3, b = 4, c = 5 → 출력: true
  • 입력: a = 1, b = 2, c = 3 → 출력: false
  • 입력: a = 7, b = 7, c = 7 → 출력: true
  • 입력: a = 0, b = 4, c = 4 → 출력: false

힌트

  • 세 수를 오름차순으로 정렬하면 가장 긴 변을 쉽게 찾을 수 있습니다.
  • 가장 짧은 두 변의 합이 가장 긴 변보다 커야 합니다.
  • 길이가 0인 변이 있으면 삼각형을 만들 수 없습니다.

해설

삼각형을 만들 수 있는지 확인할 때는 세 변을 모두 복잡하게 비교할 필요가 없습니다.

세 변을 오름차순으로 정렬해 [x, y, z]라고 하면 z가 가장 긴 변입니다. 이때 삼각형이 되려면 다음 조건을 만족해야 합니다.

  • x > 0
  • x + y > z

예를 들어 3, 4, 5는 정렬해도 [3, 4, 5]이고 3 + 4 > 5이므로 삼각형을 만들 수 있습니다.

반대로 1, 2, 31 + 2 = 3입니다. 두 짧은 변을 이어도 가장 긴 변과 같은 길이밖에 되지 않으므로 실제 삼각형을 만들 수 없습니다.

풀이 흐름은 다음과 같습니다.

  1. 세 값을 배열에 담아 오름차순으로 정렬합니다.
  2. 가장 작은 값이 0 이하라면 false를 반환합니다.
  3. 가장 짧은 두 변의 합이 가장 긴 변보다 큰지 확인합니다.
  4. 조건을 만족하면 true, 아니면 false를 반환합니다.

정렬하는 값이 항상 3개뿐이므로 시간과 공간 사용은 사실상 상수입니다.

코드 작성

starter code를 바탕으로 함수를 완성한 뒤 예제 테스트를 실행해보세요.

JavaScript 에디터 로딩 중...

커스텀 테스트

함수 인자를 JSON 배열 형태로 입력하세요. 예: [3, 5], [[1, 2, 3]]

아직 실행하지 않았습니다.

실행 결과

아직 실행하지 않았습니다.

예제 테스트를 실행하면 여기에서 결과를 확인할 수 있습니다.

댓글

문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.