처음 시도는 이렇게 했다.
function solution(sides) {
var answer = 0;
var max = 0;
var result = 0;
for (let i = 0; i < sides.length; i++) {
for (let j = 0; j < sides.length; j++) {
if (i !== j && sides[i] > sides[j]) {
max = sides[i];
}
}
}
for (let i = 0; i < sides.length; i++) {
if (max === sides[i]) {
sides[i] = 0;
}
}
for (let i = 0; i < sides.length; i++) {
result += sides[i];
}
if (result > max) {
answer = 2;
} else {
answer = 1;
}
return answer;
}
console.log(solution([199, 72, 222]));
최대한 배열의 기능을 쓰지 않고 구현해본건데 테스트 케이스 6번에서 실패했다. 블랙박스라 그 부분을 알 수 없었다.
뭔가 효율적이지도 않고 허점이 있었던 코드였던 것 같았다.
일단 sort() 기능을 사용해야겠다. 파이썬과 달리 자바스크립트는 sort() 사용법에 손이 조금 더 간다.
function solution(sides) {
var answer = 0;
sides.sort(function (a, b) {
return b - a;
});
if (sides[0] < sides[1] + sides[2]) {
answer = 1;
} else {
answer = 2;
}
return answer;
}
sort()를 그냥 사용하기 어렵고 내림차순으로 사용하기 위해선 위의 방법처럼 sort 안에 함수로 값들의 차이를 리턴하며 sort를 해야한다.
https://noirstar.tistory.com/359
자바스크립트 sort() 내부 알고리즘은 이렇다고 한다.
'개발 > 코딩테스트' 카테고리의 다른 글
[Javascript] 프로그래머스 코딩테스트 입문 팩토리얼 (0) | 2023.10.01 |
---|---|
[Javascript] 유클리드 호제법을 활용한 최대공약수(GCD), 최소공배수(LCM) 구하기 (0) | 2023.10.01 |
[Javascript] 프로그래머스 첫 번째로 나오는 음수 (0) | 2023.09.30 |
[프로그래머스_SQL_고득점kit][MySQL] SELECT Lv.2 - 131536. 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2022.10.18 |
[프로그래머스_SQL_고득점kit][MySQL] SELECT Lv.1 - 131112. 강원도에 위치한 생산공장 목록 출력하기 (0) | 2022.10.18 |