삼각형을 만들 수 있는지 확인하기
자바스크립트 코딩테스트 문제로 numeric-validation 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.
문제 설명
세 정수 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 > 0x + y > z
예를 들어 3, 4, 5는 정렬해도 [3, 4, 5]이고 3 + 4 > 5이므로 삼각형을 만들 수 있습니다.
반대로 1, 2, 3은 1 + 2 = 3입니다. 두 짧은 변을 이어도 가장 긴 변과 같은 길이밖에 되지 않으므로 실제 삼각형을 만들 수 없습니다.
풀이 흐름은 다음과 같습니다.
- 세 값을 배열에 담아 오름차순으로 정렬합니다.
- 가장 작은 값이
0이하라면false를 반환합니다. - 가장 짧은 두 변의 합이 가장 긴 변보다 큰지 확인합니다.
- 조건을 만족하면
true, 아니면false를 반환합니다.
정렬하는 값이 항상 3개뿐이므로 시간과 공간 사용은 사실상 상수입니다.
코드 작성
starter code를 바탕으로 함수를 완성한 뒤 예제 테스트를 실행해보세요.
JavaScript
에디터 로딩 중...
커스텀 테스트
함수 인자를 JSON 배열 형태로 입력하세요. 예: [3, 5], [[1, 2, 3]]
아직 실행하지 않았습니다.
실행 결과
아직 실행하지 않았습니다.
예제 테스트를 실행하면 여기에서 결과를 확인할 수 있습니다.
댓글
문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.