[코딩테스트] 58. 배열 만들기 5

윤설안's avatar
Aug 01, 2025
[코딩테스트] 58. 배열 만들기 5

문제

💡
문자열 배열 intStrs와 정수 ksl가 주어집니다. intStrs의 원소는 숫자로 이루어져 있습니다.
배열 intStrs의 각 원소마다 s번 인덱스에서 시작하는 길이 l짜리 부분 문자열을 잘라내 정수로 변환합니다. 이때 변환한 정수값이 k보다 큰 값들을 담은 배열을 return 하는 solution 함수를 완성해 주세요.

제한사항

  • 0 ≤ s < 100
  • 1 ≤ l ≤ 8
  • 10 ≤ k < 10
    • l - 1
      l
  • 1 ≤ intStrs의 길이 ≤ 10,000
    • s + l ≤ intStrs의 원소의 길이 ≤ 120

예시

notion image

풀이

문자열 배열 intStrs에서 각 문자열의 일부 구간만 잘라내고, 그 값을 정수로 변환한 뒤, 주어진 값 k보다 큰 경우만 추출해서 새로운 배열에 담는 문제이다.
각 문자열에서 특정 인덱스 구간을 잘라내기 위해 먼저 toCharArray()를 사용하여 문자 배열로 변환했다. 이렇게 하면 인덱스를 이용해 개별 문자에 쉽게 접근할 수 있다.
잘라낸 구간은 char[] 배열을 순회하면서 temp라는 문자열에 문자를 하나씩 이어붙이는 방식으로 만들었다. 예를 들어, s = 5, l = 5일 때 인덱스 5부터 9까지의 문자를 반복문을 통해 이어붙였다.
이후 만들어진 문자열은 정수 k와 비교해야 하므로, 문자열 상태에서는 비교할 수 없어 Integer.parseInt()를 사용해 정수로 변환했다. 변환된 결과가 k보다 클 경우에만 결과 리스트에 저장하도록 했다.
결과를 담을 컬렉션으로는 ArrayList를 사용했는데, 이는 조건을 만족하는 값이 몇 개인지 미리 알 수 없기 때문이다. 리스트에 값을 추가한 후, 최종적으로 결과를 int[] 배열 형태로 반환해야 하므로 ArrayList에서 하나씩 값을 꺼내어 정수 배열에 복사했다.
import java.util.ArrayList; public class Ex35 { public static void main(String[] args) { String[] intStrs = {"0123456789", "9876543210", "9999999999999"}; int k = 50000; int s = 5; int l = 5; ArrayList<Integer> sol = new ArrayList<>(); for (int i = 0; i < intStrs.length; i++) { char[] stringChar = intStrs[i].toCharArray(); String temp = ""; for (int j = s; j < s + l; j++) { temp = temp + stringChar[j]; } int result = Integer.parseInt(temp); if (result > k) { sol.add(result); } } int[] answer = new int[sol.size()]; for (int i = 0; i < sol.size(); i++) { answer[i] = sol.get(i); } } }
notion image
Share article

An's Blog