문제설명
선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
- 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.
제한사항
- sides의 원소는 자연수입니다.
- sides의 길이는 3입니다.
- 1 ≤ sides의 원소 ≤ 1,000
입출력 예 & 설명
입출력 예 #1
- 가장 큰 변인 3이 나머지 두 변의 합 3과 같으므로 삼각형을 완성할 수 없습니다. 따라서 2를 return합니다.
입출력 예 #2
- 가장 큰 변인 6이 나머지 두 변의 합 5보다 크므로 삼각형을 완성할 수 없습니다. 따라서 2를 return합니다.
입출력 예 #3
- 가장 큰 변인 222가 나머지 두 변의 합 271보다 작으므로 삼각형을 완성할 수 있습니다. 따라서 1을 return합니다.
소스코드&결과
function solution(sides) {
var max = 0;
var a = sides[0], b = sides[1], c = sides[2];
if(a > b) max = a;
else max = b;
if(max < c) max = c;
if((a+b+c) - max > max) return 1;
else return 2;
}
코드 설명
var max = 0;
var a = sides[0], b = sides[1], c = sides[2];
- 최댓값 max로 선언
- a는 sides의 인덱스 0번째 값으로 선언
- b는 sides의 인덱스 1번째 값으로 선언
- c는 sides의 인덱스 2번째 값으로 선언
if(a > b) max = a;
else max = b;
if(max < c) max = c;
- 먼저 세 수중 최댓값을 구해주었다.
- 만약 a가 b보다 크면 max는 a이고 아니면 max는 b이다
- 그리고 만약 c가 max보다 크면 max는 c이다.
if((a+b+c) - max > max) return 1;
else return 2;
- 세 수를 모든 더한 값에서 max 를 뺀값이 max보다 크다면 삼각형을 만들 수 있으므로 1을 return해주었고, 아니라면 2를 리턴해주었다.
다른 사람이 짠 코드
function solution(sides) {
sides = sides.sort((a,b) => a-b)
return sides[0]+sides[1] > sides[2] ? 1 : 2;
}
위의 코드를 보고 '아 맞다 오름차순을 이용하면 되구나!!'라고 큰 깨달음을 얻게 되었다...
위 코드는 sides를 오름차순으로 정렬을 한후 삼항연산자의 이용하여 값을 구해주었다.
'Coding Test > 프로그래머스' 카테고리의 다른 글
[JAVA] 같은 숫자는 싫어 (0) | 2023.04.13 |
---|---|
[JAVA] 최대공약수와 최소공배수 (0) | 2023.04.10 |
[JAVA] 행렬의 덧셈 (0) | 2023.04.08 |
[JAVA] 직사각형 별 찍기 (0) | 2023.04.08 |
[JAVA] 부족한 금액 계산하기 (0) | 2023.04.06 |