728x90
# 문제
선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요.
# 답안
// 1. 입력: 삼각형의 두 변의 길이가 담긴 배열 -> [1,2] 같은거
// 2. 출력: 나머지 한변이 될 수 있는 정수의 개수
function solution(sides) {
let a = Math.min(...sides)
let b = Math.max(...sides)
let answer = 0
for(let i = 1 ; i < a+b ; i++){
let arr = [a,b,i].sort((a,b) => a-b)
if(arr[0] + arr[1] > arr[2]){
answer++
}
}
return answer;
}
주어진 배열 sides = [11, 7]을 기준으로 코드가 어떻게 동작하는지 단계별로 설명하겠습니다.
- 먼저, Math.min(...sides)와 Math.max(...sides)를 사용하여 배열 sides의 최솟값과 최댓값을 찾습니다.
- Math.min(...sides)는 배열 sides의 요소 중 가장 작은 값을 반환합니다. 여기서는 7이 최솟값입니다.
- Math.max(...sides)는 배열 sides의 요소 중 가장 큰 값을 반환합니다. 여기서는 11이 최댓값입니다.
- 다음으로, for 반복문을 시작합니다. i의 초기값은 1이고, a+b보다 작을 때까지 반복합니다. 여기서 a+b는 가장 짧은 변과 가장 긴 변의 합입니다.
- a + b = 7 + 11 = 18이므로 반복문은 i가 1부터 17까지 총 17번 반복됩니다.
- a + b = 7 + 11 = 18이므로 반복문은 i가 1부터 17까지 총 17번 반복됩니다.
- 각 반복에서는 변의 길이가 [a, b, i]인 배열을 생성하고, 정렬합니다.
- 예를 들어, i가 1인 경우 배열은 [7, 11, 1]이 되며, 정렬 후 [1, 7, 11]이 됩니다.
- 예를 들어, i가 1인 경우 배열은 [7, 11, 1]이 되며, 정렬 후 [1, 7, 11]이 됩니다.
- 변의 길이가 정렬된 배열에서 각 변의 길이가 삼각형의 조건을 만족하는지 확인합니다.
- 여기서는 arr[0] + arr[1] > arr[2]를 사용하여 삼각부등식을 확인합니다.
- [1, 7, 11]에서는 1 + 7이 11보다 작으므로 삼각형의 조건을 만족합니다. 따라서 answer가 증가합니다.
- 반복문이 종료된 후, answer 값이 반환됩니다. 여기서는 삼각형을 만들 수 있는 경우의 수인 17이 반환됩니다.
따라서 sides = [11, 7]인 경우, 가능한 삼각형의 개수는 17개입니다.
728x90
'Coding Test > Programmers' 카테고리의 다른 글
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 77 - 외계어 사전) (0) | 2024.04.19 |
---|---|
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 76 - 직사각형 넓이 구하기) (0) | 2024.04.19 |
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 74 - 구슬을 나누는 경우의 수) (0) | 2024.04.17 |
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 73 - 문자열 계산하기) (0) | 2024.04.17 |
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 72 - 영어가 싫어요) (0) | 2024.04.17 |