프로그래머스 : 할 일 목록

Digeut·2024년 6월 25일
0

프로그래머스

목록 보기
171/171

❔문제설명

오늘 해야 할 일이 담긴 문자열 배열 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는 아직 마치지 못했음을 나타냅니다.
아직 마치지 못한 일이 적어도 하나 있습니다.

🤔아이디어

HashMap에 각각 todo_list랑 finished를 넣은 다음에 값이 false인 경우에는 notDondList에 넣어서 todo_list를 반환하면 되지 않을까?

❌틀린코드

import java.util.*;

class Solution {
    public String[] solution(String[] todo_list, boolean[] finished) {
        
        Map<String, Boolean> todoTask = new HashMap<>();
        for (int i = 0; i < todo_list.length; i++) {
            todoTask.put(todo_list[i], finished[i]);
        }
        
        List<String> notDoneList = new ArrayList<>();
        
        if(todoTask[1] == false){
            notDoneList.add(todoTask[0]);
        }
        String[] answer = new String[notDoneList.size()];
        answer = notDoneList.toArray(answer);
        return answer;
    }
}

🙄오류

Map은배열이 아니기때문에 인덱스 값을 이용해서 가져올수가 없다... key와 값으로 이루어져있으니까 값을 가져오려면 key값이 필요하게된다. 음.. todo_list와 finished 배열이 동일한 인덱스에서 서로 매칭되니까 그냥 단순하게 풀어야하나

💡코드풀이

import java.util.*;

class Solution {
    public String[] solution(String[] todo_list, boolean[] finished) {
        
        List<String> notDoneList = new ArrayList<>();
        
        for(int i =0 ; i < todo_list.length ; i++){
            if(!finished[i]){
                notDoneList.add(todo_list[i]);
            }
        }
        
        String[] answer = new String[notDoneList.size()];
        answer = notDoneList.toArray(answer);
        return answer;
    }
}
profile
백엔드 개발자 지망생

0개의 댓글