Skip to main content

17. [Java] 배열 만들기 5

https://school.programmers.co.kr/learn/courses/30/lessons/181912

  • 문자열 배열 intStrs와 정수 k, s, l가 주어진다.
  • intStrs의 각 원소마다 s번 인덱스에서 시작하는 길이 l짜리 부분 문자열을 잘라내 정수로 변환하고
  • 이때 변환한 정수값이 k보다 큰 값들을 담은 배열을 반환하기

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

코드

  1. ​길이 알 수 없기 때문에 ArrayList<> answer선언
  2. s번 인덱스부터 길이 l만큼 문자열 자르고 정수형으로 변환
  3. 해당 정수가 k보다 크면 answer에 추가하기
  4. answer을 int[]로 변환
import java.util.*;

class Solution {
    public int[] solution(String[] intStrs, int k, int s, int l) {
        ArrayList<Integer> answer = new ArrayList<>();
        for (String str : intStrs) {
            // s번 인덱스부터 길이 l만큼 부분 문자열 자르기
            String sub = str.substring(s, s + l);
            int val = Integer.parseInt(sub);
            
            if (val > k) {
                answer.add(val);
            }
        }
        
        // List<Integer>을 int[]로 변환하기
        int[] result = new int[answer.size()];
        for (int i = 0; i < answer.size(); i++) {
            result[i] = answer.get(i);
        }
        return result;
    }
}
substring(int beginIndex, int endIndex)
str.substring(s, e)
  • 시작 인덱스 s부터, 끝 인덱스 e "직전까지"의 문자열을 반환 (e-1 까지)
  • 즉, s는 포함, e는 미포함
  • e - s 길이의 문자열이 추출됨

📌 예시

String str = "abcdef";
String result = str.substring(2, 5);
System.out.println(result); // "cde"
  • 인덱스 2 = 'c'
  • 인덱스 5 = 'f' → 포함 안 됨
  • 결과는 "cde"