
내가 생각했을때 문제에서 원하는부분
오늘 해야 할 일이 담긴 문자열 배열 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;
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.