배열 만들기 5

nacSeo (낙서)·2024년 1월 13일
0

프로그래머스

목록 보기
29/169

문제 설명

문자열 배열 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

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글