
내가 생각했을때 문제에서 원하는부분
문자열 배열 intStrs와 정수 k, s, l가 주어집니다.
intStrs의 원소는 숫자로 이루어져 있습니다.
배열 intStrs의 각 원소마다 s번 인덱스에서 시작하는 길이 l짜리 부분 문자열을 잘라내 정수로 변환합니다.
이때 변환한 정수값이 k보다 큰 값들을 담은 배열을 return 하는 solution 함수를 완성해 주세요.
내가 이 문제를 보고 생각해본 부분
Main33 클래스는 solution 메서드를 포함한다.
solution 메서드는 문자열 배열 intStrs와 정수 k, 인덱스 s, 길이 l을 입력으로 받는다.
각 문자열 원소에서 인덱스 s부터 길이 l만큼 부분 문자열을 잘라낸 후 정수로 변환한다.
이 정수가 k보다 클 경우 동적 배열 resultList에 저장한다.
반복이 끝나면 리스트를 정수 배열로 변환해 반환한다.
main 메서드에서는 테스트용으로 예제 값을 지정하고, solution을 호출하여 결과 배열을 Arrays.toString()으로 출력한다.
출력 결과는 배열 형태인 [56789, 99999] 같이 한 줄에 결과가 보여지도록 한다.
코드로 구현
import java.util.ArrayList;
class Solution {
public int[] solution(String[] intStrs, int k, int s, int l) {
ArrayList<Integer> resultList = new ArrayList<>();
for (String str : intStrs) {
String sub = str.substring(s, s + l);
int num = Integer.parseInt(sub);
if (num > k) {
resultList.add(num);
}
}
int[] answer = new int[resultList.size()];
for (int i = 0; i < resultList.size(); i++) {
answer[i] = resultList.get(i);
}
return answer;
}
}
프로그래머스 코드
package programmers;
import java.util.ArrayList;
import java.util.Arrays;
// 프로그래머스 배열 만들기 5
public class Main33 {
public int[] solution(String[] intStrs, int k, int s, int l) {
ArrayList<Integer> resultList = new ArrayList<>();
for (String str : intStrs) {
String sub = str.substring(s, s + l);
int num = Integer.parseInt(sub);
if (num > k) {
resultList.add(num);
}
}
int[] answer = new int[resultList.size()];
for (int i = 0; i < resultList.size(); i++) {
answer[i] = resultList.get(i);
}
return answer;
}
public static void main(String[] args) {
Main33 sol = new Main33();
String[] intStrs = {"0123456789", "9876543210", "9999999999999"};
int k = 50000, s = 5, l = 5;
int[] result = sol.solution(intStrs, k, s, l);
System.out.println(Arrays.toString(result));
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.