목차
#1 부분 문자열 이어 붙여 문자열 만들기
문제 설명
길이가 같은 문자열 배열 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 | result |
["progressive", "hamburger", "hammer", "ahocorasick"] | [[0, 4], [1, 2], [3, 5], [7, 7]] | "programmers" |
#2 코드 및 알고리즘
import java.util.stream.Collectors;
import java.util.stream.IntStream;
class Solution {
public String solution(String[] my_strings, int[][] parts) {
String answer = IntStream.range(0, parts.length).mapToObj(i -> my_strings[i].substring(parts[i][0], parts[i][1] + 1)).collect(Collectors.joining());
return answer;
}
}
------------------------------------------------
import java.util.stream.Collectors;
import java.util.stream.IntStream;
class Solution {
public String solution(String[] my_strings, int[][] parts) {
String answer = "";
for(int i = 0; i < parts.length; i++){
answer += my_strings[i].substring(parts[i][0], parts[i][1] + 1);
}
return answer;
}
}
풀이:
- IntStream 사용보다는 단순히 for문 반복이 컴파일 속도면에서 더 빨랐다.
- parts의 길이만큼 반복을 진행하며, my_string의 [i][0] 번 인덱스부터 [i][1] 번 인덱스까지의 문자열만 잘라낸다.
- answer 문자열에 이어 붙이기를 진행한다.
728x90
'JAVA > 프로그래머스 코딩 기초 트레이닝' 카테고리의 다른 글
[프로그래머스, LV.0] 문자열 여러 번 뒤집기 (0) | 2023.06.22 |
---|---|
[프로그래머스, LV.0] 9로 나눈 나머지 (0) | 2023.06.22 |
[프로그래머스, LV.0] 배열 만들기 5 (0) | 2023.05.29 |
[프로그래머스, LV.0] 글자 이어 붙여 문자열 만들기 (1) | 2023.05.21 |
[프로그래머스, LV.0] 간단한 논리 연산 (0) | 2023.05.21 |