백설공주가 일과를 마치고 돌아와보니 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다.
아홉 명의 난쟁이는 모두 자신이 "백성 공주와 일곱 난쟁이"의 주인공이라고 주장한다.
일곱 난쟁이를 구하라.
function solution(arr) {
let answer = arr;
// reduce 를 활용해서 아홉 명의 난쟁이의 키의 합을 구함
const sum = arr.reduce((a, b) => a + b);
// for 문 최적화
const length = arr.length;
// 이중 반복문을 활용해 범인이 두 명인 상황을 모두 접근
for(let i = 0;i < length-1; i++) {
for(let j = i + 1; j < length; j++) {
const criminal1 = arr[i];
const criminal2 = arr[j];
// 범인 확인
// 난쟁이들 키의 합 - (범인1 + 범인2) = 100 이 참인 경우
if(sum - (criminal1 + criminal2) === 100) {
// splice 로 특정 인덱스 하나씩 범인 제거
// j를 먼저 사용한 이유는
arr.splice(j, 1);
arr.splice(i, 1);
}
}
}
return answer;
}
let arr = [20, 7, 23, 19, 10, 15, 25, 8, 13];
console.log(solution(arr));
처음에는 일곱 난쟁이들의 키의 합이 100이라는 문구를 확인하고 7개를 더해서 100이 나오는 것을 찾아야지 라는 생각을 했다..😭
다행히 금방 정신을 차려 난쟁이들 키의 합 - (범인1 + 범인2) = 100 이 참인 경우 으로 생각을 바꾸고 이중 반복문을 사용