Coding Test/Java Coding Test

[프로그래머스 / 자바] - 배열 만들기 5

nam_ji 2024. 6. 25. 23:34

배열 만들기 5

문제

  • 문자열 배열 intStrs와 정수 k, s, l이 매개변수로 주어집니다.
  • intStrs의 원소는 숫자로 이루어져 있습니다.
  • 배열 intStrs의 각 원소마다 s번 인덱스에서 시작하는
  • 길이 l짜리 부분 문자열을 잘라내 정수로 변환합니다.
  • 이때 변환한 정수값이 k보다 큰 값들을 담은 배열을 출력하는 문제입니다.


테스트 (인텔리제이)

  • 우선 k보다 큰 값을 저장할 새로운 배열을 선언해줍니다.
  • 이제 for문을 이용하여 intStrs의 값을 하나씩 꺼낼 수 있게 intStrs의 크기만큼 순회하도록 합니다.
  • for문 안에 intStrs을 s부터 l까지 각 원소를 잘라 Integer 클래스의 parseInt 메서드를 이용하여 정수로 변환해준 값을 newInt에 저장합니다.
  • if문을 이용하여 newInt가 k보다 크면 answer에 추가하도록 해주면 됩니다.
import java.util.ArrayList;
import java.util.List;

public class 배열_만들기_5 {
  public static void main(String[] args) {
    /*
    문자열 배열 intStrs와 정수 k, s, l이 매개변수로 주어집니다.
    intStrs의 원소는 숫자로 이루어져 있습니다.
    배열 intStrs의 각 원소마다 s번 인덱스에서 시작하는
    길이 l짜리 부분 문자열을 잘라내 정수로 변환합니다.
    이때 변환한 정수값이 k보다 큰 값들을 담은 배열을 출력하는 문제입니다.

    입출력 예
    intStrs	                                    k	    s	l	result
    ["0123456789","9876543210","9999999999999"]	50000	5	5	[56789, 99999]

    입출력 설명
    idx	잘라낸 문자열	ret
    0	  "56789"	    [56789]
    1	  "43210"	    [56789]
    2	  "99999"	    [56789, 99999]
     */

    String[] intStrs = {"0123456789","9876543210","9999999999999"};
    List<Integer> str = new ArrayList<>();
    int k = 50000;
    int s = 5;
    int l = 5;

    for (int i = 0; i < intStrs.length; i++) {
      int newInt = Integer.parseInt(intStrs[i].substring(s, s + l));
      if (newInt > k) {
        str.add(newInt);
      }
    }

    System.out.println(str);
  }
}

 


프로그래머스 코드

import java.util.*;

class Solution {
    public List solution(String[] intStrs, int k, int s, int l) {
        List<Integer> answer = new ArrayList<>();
        
        for (int i = 0; i < intStrs.length; i++) {
            int newInt = Integer.parseInt(intStrs[i].substring(s, s + l));
            if (newInt > k) {
                answer.add(newInt);
            }
        }
        return answer;
    }
}