아홉 난쟁이 중 진짜 일곱 난쟁이 찾기, 일곱 난쟁이 키의 합은 100
아홉 난쟁이 키는 모두 다르며, 가능한 정답이 여러 가지인 경우엔 아무거나 출력
풀이
function solution(arr) {
let answer = arr;
let sum = answer.reduce(function add(result, currValue) {
return result + currValue;
});
for (let i = 0; i < arr.length; i++) {
for (let j = 1; j < arr.length; j++) {
if (sum - (answer[i] + answer[j]) === 100) {
answer.splice(j, 1);
answer.splice(i, 1);
break;
}
}
}
return answer;
}
let arr = [20, 7, 23, 19, 10, 15, 25, 8, 13];
console.log(solution(arr));
해당 문제는 어떻게 풀어야 할 지 떠오르지가 않아 강사 풀이를 조금 참고하고 풀었다.
아홉 난쟁이를 두명씩 짝지어 모든 경우의 수를 반복문을 통해 비교해보는 것이다.
그리고 위배되는 두 난쟁이를 찾았으면 splice 메서드를 이용해 제거한다.
splice() 메서드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경한다
첫번째 매개변수는 배열의 변경을 시작할 index,
두번째 매개변수는 배열에서 제거할 요소의 수이다.
세번째 매개변수는 배열에 추가할 요소이며, 아무 요소도 지정하지 않으면 제거만 한다.
splice랑 slice랑 헷갈렸는데,
slice() 메서드는 배열의 일부분을 잘라내어 새로운 배열로 리턴하는 메서드다
첫번째 매개변수는 잘라낼 배열의 시작 index,
두번째 매개변수는 잘라낼 배열의 종료 index이다. 이때 종료 index값은 포함되지않고 전까지 포함한다.
만약 두번째 매개변수를 생략하면 끝까지 잘라낸다.
'코딩테스트 문제풀이 > inflearn' 카테고리의 다른 글
[인프런] Node.js / 섹션1 - 기본문제 풀이 / 10. 문자 찾기 (0) | 2023.01.04 |
---|---|
[인프런] Node.js / 섹션1 - 기본문제 풀이 / 9. A를 #으로 (0) | 2023.01.04 |
[인프런] Node.js / 섹션1 - 기본문제 풀이 / 7. 10부제 (0) | 2022.07.25 |
[인프런] Node.js / 섹션1 - 기본문제 풀이 / 6. 홀수 (feat. for...of) (0) | 2022.07.24 |
[인프런] Node.js / 섹션1 - 기본문제 풀이 / 5. 최솟값 구하기 (feat. Math, 전개구문/apply) (0) | 2022.07.24 |