문제
길이가 같은 문자열 배열
my_strings
와 이차원 정수 배열 parts
가 매개변수로 주어집니다. parts[i]
는 [s, e] 형태로, my_string[i]
의 인덱스 s부터 인덱스 e까지의 부분 문자열을 의미합니다. 각 my_strings
의 원소의 parts
에 해당하는 부분 문자열을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.제한사항
- 1 ≤
my_strings
의 길이 =parts
의 길이 ≤ 100
- 1 ≤
my_strings
의 원소의 길이 ≤ 100
parts[i]
를 [s, e]라 할 때, 다음을 만족합니다.- 0 ≤ s ≤ e <
my_strings[i]
의 길이
예시

풀이
문제는 주어진 문자열 배열
my_strings
에서 각 문자열마다 특정 구간의 문자만 잘라서 하나의 문자열로 이어붙이는 작업이다. 각 잘라낼 구간 정보는 parts
라는 2차원 배열에 들어 있으며, 여기엔 각 문자열에서 잘라야 할 시작 인덱스와 끝 인덱스가 담겨 있다.각 문자열에서 구간을 추출하려면 인덱스를 정확히 알고 있어야 하므로,
substring()
메서드를 활용했다. 이 메서드는 특정 구간의 문자열을 잘라낼 수 있어서 이 문제에 적합하다. 반복문을 통해 parts
배열을 순회하면서, 각 구간의 시작 인덱스와 끝 인덱스를 start
와 end
라는 변수에 담아 간단하게 사용할 수 있도록 처리했다.substring(start, end)
메서드는 시작 인덱스는 포함, 끝 인덱스는 제외하는 규칙을 갖고 있기 때문에, 원하는 범위를 정확히 잘라내기 위해 끝 인덱스에 +1
을 해주었다. 예를 들어 substring(0, 4)
는 0, 1, 2, 3번 인덱스만 포함되므로, 4번 인덱스까지 포함하려면 substring(0, 5)
로 써야 한다.public class Ex36 {
public static void main(String[] args) {
String[] my_strings = {"progressive", "hamburger", "hammer", "ahocorasick"};
int[][] parts = {{0, 4}, {1, 2}, {3, 5}, {7, 7}};
String answer = "";
for (int i = 0; i < parts.length; i++) {
int start = parts[i][0];
int end = parts[i][1];
answer += my_strings[i].substring(start, end + 1);
}
System.out.println(answer);
}
}

Share article