[위코드 No.2] splice

Jetom·2021년 8월 7일
2

Javascript

목록 보기
5/25
post-thumbnail

오늘은 splice3을 어떻게 풀었는지 얘기해보려한다. 2중 for문은 별찍기 이후로 안할것 같았는데.....😓

문제

시장을 봐왔는데 바구니를 보니 곰팡이가 피어있습니다.
바구니에서 곰팡이를 제거하는 함수를 작성해주세요!

입력
let basket = [['양파','곰팡이'],['곰팡이','빵','딸기잼'],['귤','곰팡이','사과']];


출력
removeGerm(basket) // [ [ '양파' ], [ '빵', '딸기잼' ], [ '귤', '사과' ] ];

나름대로의 알고리즘 🧐

  1. 다차원배열에 접근하기 위해 2중 for문을 작성한다.

  2. i를 arr.length보다 작다라는 조건문을 반복해 배열에 접근한다.
    (i는 0,1,2부터 시작하고 arr.length는 길이므로1,2,3부터 시작한다.)

  3. '곰팡이'에 접근하기 위해 j를 arr[i].length만큼 반복한다.
    (<=를 해준 이유는 j가 arr[i].length와 같아질 경우도 있기 때문에 해주었다. <만 해주어도 된다.)

  4. 만약 arr[i][j]가 '곰팡이'와 같다면 splice를 해준다.

  5. splice를 해줄 때, '곰팡이'가 몇 번째 요소에 있을지 모르니 j를 시작점으로 두고 한개의 요소를 지운다.

  6. 여러 개의 '곰팡이'가 있을 경우를 생각하여 j--를 하여 한번 더 조건을 체크해준다.


최종 코드 🧚‍♀️

let basket = [['양파','곰팡이'],['곰팡이','빵','딸기잼'],['귤','곰팡이','사과']];

function removeGerm(arr) {
  // 여기에 코드를 작성해주세요!
  for(let i = 0; i < arr.length; i++){
    for(let j = 0; j <= arr[i].length; j++){
      if(arr[i][j] === '곰팡이'){
        arr[i].splice(j, 1);
        j--;
      }
    }
  }

  return arr;
}

console.log(removeGerm(basket));

💡 j--를 해주는 이유
['귤', '곰팡이', '곰팡이', '사과']일 때, splice(j, 1)로 첫 번째 '곰팡이'가 지워지고 그 다음 두 번째 '곰팡이'는 이미 첫 번째 '곰팡이'를 지우는 조건을 만족했기 때문에 넘어가게 된다. 따라서 결과는 ['귤','곰팡이','사과']가 나오게 된다.

profile
사람이 좋은 인간 리트리버 신혜리입니다🐶

0개의 댓글