프로그래머스/Lv. 0(코딩 기초 트레이닝)

[프로그래머스 코딩테스트] 배열 만들기 5(Java)

Sigfriede 2023. 5. 31. 01:10

  문제 설명

  문자열 배열 intStrs와 정수 k, s, l가 주어집니다. intStrs의 원소는 숫자로 이루어져 있습니다.

  배열 intStrs의 각 원소마다 s번 인덱스에서 시작하는 길이 l짜리 부분 문자열을 잘라내 정수로 변환합니다. 이때 변환한 정수값이 k보다 큰 값들을 담은 배열을 return 하는 solution 함수를 완성해 주세요.

 

  제한사항

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

 

  입출력 예

intStrs k s l result
["0123456789",
"9876543210",
"9999999999999"]
50000 5 5 ["56789", "99999"]
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 str = Integer.parseInt(intStrs[i].substring(s, s + l));
            if (str > k) {
                list.add(str);
            }
        }
        
        int[] answer = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            answer[i] = list.get(i);
        }
        return answer;
    }
}

  ArrayList를 생성합니다.

  for문이 intStrs의 길이만큼 순회합니다. intStrs의 i번째 원소를 substring 메소드를 이용하여 s부터 s + l 번째 인덱스까지 절단합니다. 이를 Integer 클래스의 parseInt 메소드를 이용하여 문자열 형태의 원소를 정수형으로 변경하고 str 변수에 할당합니다.

  if문에서 만약 str이 k보다 크다면 list에 add 메소드를 이용하여 str을 삽입합니다.

  answer 배열을 생성하고 크기는 list와 동일하게 지정합니다. ArrayList를 Array로 단번에 변경할 수 없으므로, 배열을 복사하고 반환할 것입니다.

  마찬가지로 for문에서 list의 size만큼 순회하고, answer의 i번째 원소에 list의 get 메소드를 이용하여 list의 i번째 원소를 할당합니다.