코드 그라데이션
[Lv.0] 배열 자르기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/120833
문제 설명
정수 배열 numbers와 정수 num1, num2 가 매개변수로 주어질 때,
num1 번째 인덱스부터 num2 번째 인덱스까지 자른 정수 배열을 return하도록 함수를 완성하세요.
제한사항
* 2 ≤ numbers의 길이 ≤ 30
* 0 ≤ numbers의 원소 ≤ 1,000
* 0 ≤num1 < num2 < numbers의 길이
입출력 예
입출력 예 설명
입출력 예 #1
[1, 2, 3, 4, 5]의 1번째 인덱스 2부터 3번째 인덱스 4 까지 자른 [2, 3, 4]를 return 합니다.
입출력 예 #2
[1, 3, 5]의 1번째 인덱스 3부터 2번째 인덱스 5까지 자른 [3, 5]를 return 합니다.
아이디어
3행에서 초기화 할 때 int[numbers.length]로 잡으면 배열의 길이를 어떤식으로든 자르는 함수가 필요하겠지
여기서 원하는 것은 numbers에 1,2,3,4,5 배열이 왔을 때, 결과값으로 2,3,4 배열이 오면 된다.
자른 함수 필요 없이. 그대로 자르지 않더라도 결과만 같으면 된다.
여기서 알고 있는 건
- 원본 배열의 길이
- 자르는 시작 위치
- 자르는 끝 위치
이렇게 세 가지를 알고 있다.
테스트 케이스를 확인해보면
num2-num1+1; 임을 알 수 있다.
또한 테스트 케이스 1번을 가지고 보면
반복문 안에 들어갈 반복 코드는 //answer[0] = numbers[num1] , answer[1] = numbers[num1+1] , answer[2] = numbers[num1+2];
이러한 규칙성을 가지고 있었다.
이걸 일반적인 식으로 바꿔보면
answer[i] = numbers[num1+i]; 이 형태가 되었다.
내가 작성한 답안
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
int[] answer = new int[num2-num1+1];
for(int i=0; i<num2-num1+1; i++) {
answer[i] = numbers[num1+i];
}
return answer;
}
}
//answer[0] = numbers[num1] , answer[1] = numbers[num1+1] , answer[2] = numbers[num1+2];
'Java > 알고리즘' 카테고리의 다른 글
[Lv.0] 두 수의 나눗셈 (0) | 2023.05.10 |
---|---|
[Lv.0] (2문제) 배열 뒤집기, 배열 원소의 길이 (0) | 2023.05.10 |
[Lv.0] 배열 두 배 만들기 (1) | 2023.05.10 |
[Lv.0] 숫자 비교하기 (0) | 2023.05.10 |
[Lv.0] 대소문자 바꿔서 출력하기 (0) | 2023.05.10 |