[Algorithm/JavaScript] splice, reduce

김서윤·2021년 12월 12일
0

Algorithm/JavaScript

목록 보기
4/4

문제

1-8) 총 9개의 요소를 가진 배열에서 7개의 요소 값을 더했을 때 100이 되도록하는 배열 구하기

입력예제

20 7 23 19 10 15 25 8 13

출력예제

20 7 23 19 10 8 13



개념

reduce 함수

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함수는 쓰면 바로 배열에서 삭제되기 때문에 뒤에서 부터 삭제하면 편함

profile
오늘 못한 일은 내일도 못한다

0개의 댓글