문제 설명
문자열 배열 intStrs와 정수 k, s, l가 주어집니다. intStrs의 원소는 숫자로 이루어져 있습니다.
배열 intStrs의 각 원소마다 s번 인덱스에서 시작하는 길이 l짜리 부분 문자열을 잘라내 정수로 변환합니다. 이때 변환한 정수값이 k보다 큰 값들을 담은 배열을 return 하는 solution 함수를 완성해 주세요.
제한 사항
0 ≤ s < 100 1 ≤ l ≤ 8 10l - 1 ≤ k < 10l 1 ≤ intStrs의 길이 ≤ 10,000 s + l ≤ intStrs의 원소의 길이 ≤ 120
나의 코드
import java.util.*;
class Solution {
public int[] solution(String[] intStrs, int k, int s, int l) {
List<Integer> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
for(int i=0; i<intStrs.length; i++) {
list1.add(Integer.parseInt(intStrs[i].substring(s,s+l)));
}
for(int x=0; x<list1.size(); x++) {
if(list1.get(x)>k) {
list2.add(list1.get(x));
}
}
int[] answer = list2.stream().mapToInt(y->y).toArray();
return answer;
}
}
다른 사람 코드
import java.util.ArrayList;
class Solution {
public int[] solution(String[] intStrs, int k, int s, int l) {
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < intStrs.length; i++) {
int tmp = Integer.parseInt(intStrs[i].substring(s, s + l));
if (tmp > k) {
list.add(tmp);
}
}
int[] answer = new int[list.size()];
for (int i = 0; i < answer.length; i++) {
answer[i] = list.get(i);
}
return answer;
}
}
느낀 점
처음 생각대로 짜보고 에러를 만나보고, 그 에러를 통해 해결해나가는 과정에서 새로운 메소드도 써먹고 하면서 점점 성장해나가는 것 같다 :) 스스로 작성해보고 문제를 해결한 뒤 다른 사람 코드와 비교해보는 것도 공부가 된다. 예전에는 새로운 List를 따로 선언했을 때 어떻게 해나가야할지 막막했는데 이제 좀 길이 보인다! 확실히 변수 타입에 따라 계속 바꾸고 바꿔줘야 하기 때문에 java로 코딩테스트를 공부할 때는 까다로운 것 같다 🥲 그치만 java 공부도 할 겸 맞부딪혀보면 결국엔 내게 자산이 될 것 이다! 화이팅 ;D