🔥 CodingTest/프로그래머스

[Lv.0] 할 일 목록

김_수댕 2024. 4. 20. 16:12
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/181885

✅ 문제

오늘 해야 할 일이 담긴 문자열 배열 todo_list와 각각의 일을 지금 마쳤는지를 나타내는 boolean 배열 finished가 매개변수로 주어질 때, todo_list에서 아직 마치지 못한 일들을 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요.

제한 사항

  • 1 ≤ todo_list의 길이 1 ≤ 100
  • 2 ≤ todo_list의 원소의 길이 ≤ 20
    • todo_list의 원소는 영소문자로만 이루어져 있습니다.
    • todo_list의 원소는 모두 서로 다릅니다.
  • finished[i]는 true 또는 false이고 true는 todo_list[i]를 마쳤음을, false는 아직 마치지 못했음을 나타냅니다.
  • 아직 마치지 못한 일이 적어도 하나 있습니다.

입출력 예

todo_list  finished  result
["problemsolving", "practiceguitar", "swim", "studygraph"] [true, false, true, false] ["practiceguitar", "studygraph"]

🔎 풀이 방법

  1. for문을 사용해서 todo_list와 finished 배열의 값을 비교한다.
  2. index가 동일한 배열 값을 비교하면서 finished가 false인 값들을 result에 담는다.

더 간결하게 구할 수 있는 방법은 없을까?

filter를 사용해서 구현 할 수 있을 것 같은데...

💻 코드

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

👀 추가 공부

filter() 사용한 코드

function solution(todo_list, finished) {
    var answer = [];
    return todo_list.filter((e,i) => !finished[i]);
}
반응형