Solution 1) 내 풀이
import java.util.*;

class Solution {
    public String[] solution(String[] str_list) {
        List<String> list = new ArrayList<>();

        for (int i = 0; i < str_list.length; i++) {
            if (str_list[i].equals("l")) {
                for (int j = 0; j < i; j++) {
                    list.add(str_list[j]);
                }
                break;
            } else if (str_list[i].equals("r")) {
                for (int j = i + 1; j < str_list.length; j++) {
                    list.add(str_list[j]);
                } break;
            }
        }
        return list.toArray(new String[0]);
    }
}
int형 list를 배열로 반환하는 거였다면
retrun list.stream().mapToInt(Integer::intValue).toArray();가 됐을거다.

위의 형태는 이제 머릿속에 들어있는데, string형 list를 배열로 반환해야하는 문제였다.
위와 같이 새로운 배열 객체를 생성 후 toArray 메서드로 List형의 list를 배열로 만들어 반환한다.

여기서 배열의 객체 생성 때를 보면 크기가 0이다. 이는 자동으로 더 큰쪽(list 또는 array)로 맞춰지는 특성 때문에
편리하게 0을 넣어 생성해내면 된다.
(내 검색 키워드 String List To Array)
Solution 2) 다른 사람의 풀이
import java.util.Arrays;

class Solution {
    public String[] solution(String[] str_list) {

        for (int i = 0; i < str_list.length; i++) {

            if ("l".equals(str_list[i])) {
                return Arrays.copyOfRange(str_list, 0, i);
            } else if ("r".equals(str_list[i])) {
                return Arrays.copyOfRange(str_list, i + 1, str_list.length);
            }
        }

        return new String[0];
    }
}
copyOfRange로 형변환 없이 해결되는 모습

 

+ Recent posts