프로그래머스 할 일 목록

KIMYEONGJUN·2026년 6월 23일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

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

내가 이 문제를 보고 생각해본 부분

main 메서드에서 테스트용 todo_list와 finished 배열을 선언한다.
할 일 목록 {"problemsolving", "practiceguitar", "swim", "studygraph"}
완료 여부 {true, false, true, false}
solution 메서드를 호출해서 처리 결과를 result 배열로 받는다.
solution 메서드를 호출해서 처리 결과를 result 배열로 받는다.
Arrays.toString(result)를 이용해 result 배열을 화면에 출력한다.
solution 메서드 내부에서는 다음과 같이 동작한다.
ArrayList<String> incompleteTasks를 생성하여 아직 완료하지 않은 일들을 담을 동적 리스트를 만든다.
for 반복문으로 todo_list 배열 길이만큼 순회한다.
각 인덱스 i에 대해 finished[i]가 false인지 체크한다.
아직 완료하지 않은 일이면 todo_list[i]를 incompleteTasks에 추가한다.
반복 종료 후, incompleteTasks 크기에 맞는 문자열 배열 answer를 생성한다.
incompleteTasks.toArray(answer)를 통해 리스트의 내용을 배열로 복사한다.
변환한 배열 answer를 반환한다.

코드로 구현

import java.util.ArrayList;

class Solution {
    public String[] solution(String[] todo_list, boolean[] finished) {
        ArrayList<String> incompleteTasks = new ArrayList<>();

        for (int i = 0; i < todo_list.length; i++) {
            if (!finished[i]) {
                incompleteTasks.add(todo_list[i]);
            }
        }

        String[] answer = new String[incompleteTasks.size()];
        answer = incompleteTasks.toArray(answer);
        return answer;
    }
}

프로그래머스 코드

package programmers;

import java.util.ArrayList;
import java.util.Arrays;

// 프로그래머스 할 일 목록
public class Main60 {
    public static void main(String[] args) {
        // 테스트용 todo_list와 finished 배열 선언
        String[] todo_list = {"problemsolving", "practiceguitar", "swim", "studygraph"};
        boolean[] finished = {true, false, true, false};

        // solution 메서드 호출
        String[] result = solution(todo_list, finished);

        // 결과 출력
        System.out.println(Arrays.toString(result));
    }

    public static String[] solution(String[] todo_list, boolean[] finished) {
        ArrayList<String> incompleteTasks = new ArrayList<>();

        for (int i = 0; i < todo_list.length; i++) {
            if (!finished[i]) {
                incompleteTasks.add(todo_list[i]);
            }
        }

        String[] answer = new String[incompleteTasks.size()];
        answer = incompleteTasks.toArray(answer);
        return answer;
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글