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;
}
}