[코딩테스트] 59. 부분 문자열 이어 붙여 문자열 만들기

윤설안's avatar
Aug 02, 2025
[코딩테스트] 59. 부분 문자열 이어 붙여 문자열 만들기

문제

💡
길이가 같은 문자열 배열 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]의 길이

예시

notion image

풀이

문제는 주어진 문자열 배열 my_strings에서 각 문자열마다 특정 구간의 문자만 잘라서 하나의 문자열로 이어붙이는 작업이다. 각 잘라낼 구간 정보는 parts라는 2차원 배열에 들어 있으며, 여기엔 각 문자열에서 잘라야 할 시작 인덱스와 끝 인덱스가 담겨 있다.
각 문자열에서 구간을 추출하려면 인덱스를 정확히 알고 있어야 하므로, substring() 메서드를 활용했다. 이 메서드는 특정 구간의 문자열을 잘라낼 수 있어서 이 문제에 적합하다. 반복문을 통해 parts 배열을 순회하면서, 각 구간의 시작 인덱스와 끝 인덱스를 startend라는 변수에 담아 간단하게 사용할 수 있도록 처리했다.
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); } }
notion image
Share article

An's Blog