[JS] 길이가 같은 배열 2개를 이용한 원하는 값 찾기

또띠·2023년 9월 12일
post-thumbnail

☀️ 문제

할 일 목록
https://school.programmers.co.kr/learn/courses/30/lessons/181885

☀️ 해결 과정

두 배열을 비교해서 finished 요소가 false 인 todo_list의 index를 찾아서 result에 담아서 return 하는 문제이다.

☀️ 풀이

function solution(todo_list, finished) {
  var answer = [];
  for (let i = 0; i < todo_list.length; i++) {
    if (finished[i] == false) answer.push(todo_list[i]);
  }
  return answer;
}

처음에는 위와 같이 for문을 이용해서 풀었다.

사실 저걸 1개의 for문으로 풀 생각을 안하고 2중 for문을(...?) 사용해서 풀려고 해서 순간 바보가된 느낌이였다.

결국 2배열의 길이는 동일하기 때문에 주축이 되는 todo_list를 for문을 사용해서 finished[i]가 false인 index만 찾아주면 되는 쉬운 문제였다.


그리고 요즘 공부하고 있는 filter 메서드를 이용해서 한번 더 풀어 보았다.

function solution(todo_list, finished) {
  var answer = [];
  todo_list.filter((item, idx) => {
    // console.log(`item : ${item} | idx : ${idx}`);
    if (finished[idx] == false) answer.push(item);
  });
  return answer;
}

중간에 console.log 를 한 이유가 사실 filter에서는 인자를 보통 1개만 사용하다보니 index는 그럼 어떻게 하는거였지...? 가물가물해서 바로 구글링으로 mdn 문서를 보니 2번째 인자가 바로 index였다!

그래서 위에서 풀었던 것처럼 finished[idx]로도 해결할 수 있었다.


여기서 하나 더 추가를 하자면,
저 조건식(finished[idx] == false)을 조금더 간편하게 쓸 수도 있는데 바로

if (!finished[idx]) answer.push(item);

앞에 !를 이용해서 false임을 표현해 줄 수도 있다.

profile
✨ 𝑬𝒗𝒆𝒓𝒚𝒕𝒉𝒊𝒏𝒈 𝒄𝒐𝒎𝒆𝒔 𝒕𝒐 𝒉𝒊𝒎 𝒘𝒉𝒐 𝒉𝒖𝒔𝒕𝒍𝒆𝒔 𝒘𝒉𝒊𝒍𝒆 𝒉𝒆 𝒘𝒂𝒊𝒕𝒔. ✨

0개의 댓글