1-8) 총 9개의 요소를 가진 배열에서 7개의 요소 값을 더했을 때 100이 되도록하는 배열 구하기
20 7 23 19 10 15 25 8 13
20 7 23 19 10 8 13
arr.reduce((a, b) => {
return a+b;
}, 0)
//a는 누적값, b는 배열에서의 탐색하는 현재 값, 0자리는 초기 a값(초기값의 default 값은 0)
ex)평균구하기
arr.reduce((a,b)=>a+b)/arr.length
function solution(arr) {
let answer = arr; //얕은 복사 //arr을 바꾸면 answer도 똑같이 바뀜
//첫 번째 인자에다 배열이 돌면서 a에 누적, b는 탐색, a를 0으로 초기화
let sum = arr.reduce((a, b) => a + b, 0);
let check = sum - 100;
for (let i = 0; i < arr.length - 1; i++) {
for (let j = 1; j < arr.length; j++) {
console.log(arr[i], arr[j]);
if (arr[i] + arr[j] === check) {
arr.splice(i, 1);
arr.splice(j - 1, 1); //주의
}
}
}
return answer;
}
let arr = [20, 7, 23, 19, 10, 15, 25, 8, 13];
console.log(solution(arr));
script>
위 코드에서
arr.splice(j, 1);
arr.splice(i, 1);
이런식으로 써도 된다. splice
함수는 쓰면 바로 배열에서 삭제되기 때문에 뒤에서 부터 삭제하면 편함