본문 바로가기
코딩테스트/자바 Level 0

[Java] 할 일 목록

by onggury 2023. 7. 25.

문제

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

 

import java.util.ArrayList;

class Solution {
    public String[] solution(String[] todo_list, boolean[] finished) {
        ArrayList<String> todo_list_arr = new ArrayList<String>();
        for(int i = 0; i < finished.length; i++) {
            if(!finished[i]) {
                todo_list_arr.add(todo_list[i]);
            }
        }
        
        String[] answer = todo_list_arr.toArray(new String[todo_list_arr.size()]);
        return answer;
    }
}

지금보니까 당연히 finished와 todo_list 가 같은 길이라고 생각하고 풀었는데 조건에 명시되어있지 않기 때문에 문제에 따라 약간 위험한 풀이를 했던 것 같다.

그래서 반복문도 finished 의 길이만큼 진행했지만, todo_list 의 값을 꺼내와야하기 때문에 todo_list 길이만큼 진행하는 게 더 안전한 방법이였을 것 같다.

 

 

출처

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