<문제 제시>
정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요.
<예시 입출력>
<문제 해결 과정>
앞서 풀었던 '잘라서 배열로 저장하기' 문제와 유사해보였다.
이 문제는 정수 배열이 주어지고, 매개변수가 2개 주어질때 첫번째 매개변수부터 두번째 매개변수 인덱스 까지 자른
정수배열을 다시 리턴해야한다.
정수를 다루다보니 문자열을 처리하는 문제보다는 다소 어려울 것 같아서 정수형 리스트를 선언하여
정수형 배열을 넣어주었다. 넣어주는 과정에서 조건 인덱스를 한번에 처리하도록 하였다.
int k = 0;
for(int i = 0; i < numbers.length; i++){
if(i <= num2) {
if(i >= num1) {
temp.add(k, numbers[i]);
k++;
}
}
}
넣은 리스트의 size()를 answer의 길이로 설정하고, 리스트에서 get메서드를 통해 원소를 가져와
answer에 그대로 넣어주었다.
<전체코드>
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
//#. 배열 자르기
/* <문제설명>
정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때,
numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을
return 하도록 solution 함수를 완성해보세요.
*/
public class cut_array2 {
public static int[] solution(int[] numbers, int num1, int num2) {
List<Integer> temp = new ArrayList<>();
int k = 0;
for(int i = 0; i < numbers.length; i++){
if(i <= num2) {
if(i >= num1) {
temp.add(k, numbers[i]);
k++;
}
}
}
int[] answer = new int[temp.size()];
for(int i = 0; i < temp.size(); i++) {
answer[i] = temp.get(i);
}
return answer;
}
}
인덱스가 지정되어있고 그 부분만 잘라내면 되기때문에 앞선 문제보다는 쉽게 해결할 수 있었다.
문제링크)
https://school.programmers.co.kr/learn/courses/30/lessons/120833
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'Algorithms > 프로그래머스' 카테고리의 다른 글
[프로그래머스] '두 수의 나눗셈' - Java (0) | 2022.12.18 |
---|---|
[프로그래머스] '종이 자르기' - Java (0) | 2022.12.18 |
[프로그래머스] '잘라서 배열로 저장하기' - Java (0) | 2022.12.17 |
[프로그래머스] '연속된 수의 합' - Java (2) | 2022.12.16 |
[프로그래머스] '7의 개수' - Java (0) | 2022.12.15 |