안에서 if문으로 str_list의 원소가 l이면 Arrays 클래스의 copyOfRange 메서드를 이용하여 l 이전의 문자열 들을 answer에 복사하도록 합니다.
else if문을 사용하여 l이 아닌 r이라면 똑같이 Arrays 클래스의 copyOfRange 메서드를 사용하지만 이번에는 i 값에 + 1을 더한 위치에서 끝까지의 문자열 배열을 answer에 복사하도록 하면 됩니다.
copyOfRange 메서드는 내가 선택한 배열의 원하는 위치를 지정하여 똑같이 복사할 수 있습니다. copyOfRange(복사할 배열, 시작 위치, 마지막 위치) 여기서 주의할 점은 마지막 위치의 인덱스 번호는 포함하지 않습니다.
package com.namji.codingtest;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class 왼쪽_오른쪽 {
public static void main(String[] args) {
/*
문자열 배열 str_list가 매개변수로 주어집니다.
str_list에는 "u", "d", "l", "r" 네 개의 문자열이 여러 개 저장되어 있습니다.
str_list에서 "l"과 "r" 중 먼저 나오는 문자열이 "l"이라면
해당 문자열 기준으로 왼쪽에 있는 문자열들을 순서대로 담은 리스트를,
str_list에서 "l"과 "r" 중 먼저 나오는 문자열이 "r"이라면
해당 문자열 기준으로 오른쪽에 있는 문자열들을 순서대로 담은 리스트를
출력하는 문제입니다. 단, "l"과 "r"이 없다면 빈 배열을 출력합니다.
입출력 예
str_list result
["u", "u", "l", "r"] ["u", "u"]
["l"] []
입출력 설명
#1
"r"보다 "l"이 먼저 나왔기 때문에 "l"의 왼쪽에 있는 문자열들을 담은 리스트인 ["u", "u"]를 return합니다.
#2
"l"의 왼쪽에 문자열이 없기 때문에 빈 리스트를 return합니다.
*/
String[] str_list = {"u", "u", "l", "r"};
String[] answer = {};
for (int i = 0; i < str_list.length; i++) {
if (str_list[i].equals("l")) {
answer = Arrays.copyOfRange(str_list, 0, i);
break;
} else if (str_list[i].equals("r")) {
answer = Arrays.copyOfRange(str_list, i + 1, str_list.length);
break;
}
}
System.out.println(Arrays.toString(answer));
}
}
프로그래머스 코드
import java.util.*;
class Solution {
public String[] solution(String[] str_list) {
String[] answer = {};
for (int i = 0; i < str_list.length; i++) {
if (str_list[i].equals("l")) {
answer = Arrays.copyOfRange(str_list, 0, i);
break;
} else if (str_list[i].equals("r")) {
answer = Arrays.copyOfRange(str_list, i + 1, str_list.length);
break;
}
}
return answer;
}
}