프로그래머스/Lv. 0(코딩 기초 트레이닝)

[프로그래머스 코딩테스트] 할 일 목록(Java)

Sigfriede 2023. 5. 8. 01:20

  문제 설명

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

 

  제한사항

  • 1 <= todo_list의 길이 <= 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"]
class Solution {
    public String[] solution(String[] todo_list, boolean[] finished) {
        int count = 0;
        for (int i = 0; i < finished.length; i++) {
            if (!finished[i]) {
                count++;
            }
        }
        String[] answer = new String[count];
        int index = 0;
        for (int i = 0; i < todo_list.length; i++) {
            if (!finished[i]) {
                answer[index++] = todo_list[i];
            }
        }
        return answer;
    }
}

  마치지 못한 일을 담은 배열을 반환해야 하므로, 배열의 크기를 먼저 지정해야 합니다. 이는 finished 배열에서 false값을 세어보면 해결될 것입니다. 수를 셀 count 변수를 생성합니다. for문이 finished 배열의 길이만큼 순회합니다. 만약 finished의 i번째 원소가 false라면 count가 1씩 증가합니다.

  answer배열을 생성합니다. 크기는 앞서 구한 count 변수의 값만큼이 될 것입니다. answer의 원소의 위치가 될 index 변수를 생성합니다.

  for문이 todo_list의 길이만큼 순회합니다. 만약 finished의 i번째 원소가 false라면 answer의 index번째 원소 위치에 todo_list의 i번째 원소를 할당합니다. 조건에 해당하는 원소가 answer 배열에 차례대로 추가될 것입니다.