문제 설명
길이가 같은 문자열 배열 my_strings와 이차원 정수 배열 parts가 매개변수로 주어집니다. parts[i]는 [s, e] 형태로, my_strings[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 | result |
["progressive", "hamburger", "hammer", "ahocorasick"] | [[0, 4], [1, 2], [3, 5], [7, 7]] | "programmers" |
import java.lang.StringBuilder;
class Solution {
public String solution(String[] my_strings, int[][] parts) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < my_strings.length; i++) {
sb.append(my_strings[i].substring(parts[i][0], parts[i][1] + 1));
}
String answer = sb.toString();
return answer;
}
}
StringBuilder를 생성합니다.
for문이 my_strings의 길이만큼 순회합니다. my_strings의 길이와 parts의 길이는 동일합니다. append 메소드를 이용하여StringBuilder에 다음 조건을 만족하는 문자열을 추가합니다.
my_strings의 i번째 원소인 문자열을 substring 메소드를 이용하여 부분 문자열을 만들 것입니다. substring 메소드의 인자에서 시작 지점은 parts[i][0]번째 인덱스부터 종료 지점은 parts[i][1] + 1번째 까지입니다. + 1을 하는 이유는 substring 메소드의 종료 지점에서 종료 지점으로 지정된 인덱스는 포함하지 않기 때문입니다. 이 문제에서는 포함하도록 되어 있으므로, + 1로써 종료 지점의 인덱스까지 포함하게 한 것입니다.
앞선 과정으로 부분 문자열을 이어 붙인 문자열을 만들었습니다. answer에 반환하기 전 toString 메소드를 이용하여 sb를 변환합니다. 과정 없이 반환할 경우에는 sb에 있는 문자열 값이 출력되는 대신, 메모리에 저장된 주소를 반환합니다.
'프로그래머스 > Lv. 0(코딩 기초 트레이닝)' 카테고리의 다른 글
[프로그래머스 코딩테스트] 세로 읽기(Java) (0) | 2023.05.19 |
---|---|
[프로그래머스 코딩테스트] 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기(Java) (0) | 2023.05.19 |
[프로그래머스 코딩테스트] 특정한 문자를 대문자로 바꾸기(Java) (0) | 2023.05.18 |
[프로그래머스 코딩테스트] 접미사 배열(Java) (0) | 2023.05.18 |
[프로그래머스 코딩테스트] 접미사인지 확인하기(Java) (0) | 2023.05.17 |