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
코드
- 길이 알 수 없기 때문에 ArrayList<> answer선언
- s번 인덱스부터 길이 l만큼 문자열 자르고 정수형으로 변환
- 해당 정수가 k보다 크면 answer에 추가하기
- 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"