| 문제
정수 배열 number와 정수 num1, num2가 매개변수로 주어질 때,
numbers의 num1번째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을
return 하도록 solution 함수를 완성해 보세요.
| 제한 사항
- 2 ≤ numbers의 길이 ≤ 30
- 0 ≤ numbers의 원소 ≤ 1,000
- 0 ≤ num1 < num2 < numbers의 길이
| 입출력 예
numbers | num1 | num2 | result |
[1,2,3,4,5] | 1 | 3 | [2,3,4] |
[1,3,5] | 1 | 2 | [3,5] |
| 힌트
~부터 ~까지가 나오면 for문의 초기식과 종료식을 떠올리세요.
for문에 int i = 0 ;처럼 정해진 식만 쓸 수 있는 건 아니에요.
고정관념은 깨고, 더 넓고 다양하게 생각해 보아요.
| 풀이 1
언제나 그렇듯 최대한 주어진 문제를 직관적으로 풀어내려고 노력한 풀이법입니다.
친절하게도 num1이 num2보다 무조건 작다는 조건이 주어졌기 때문에
num1부터 출발하여 num2까지 numbers 배열 안에 들어있는 값을 하나씩 꺼내와서
새로운 배열 answer에 값을 추가하였습니다.
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
int[] answer = new int[num2-num1+1];
for(int i = num1, j=0 ; i <= num2 ; i++, j++){
answer[j] = numbers[i];
}
return answer;
}
}
| 풀이 2
java.util 패키지 아래에 있는 Arrays 클래스의 메서드 중에 copyOfRange가 있습니다.
복사하고자 하는 배열, 시작 인덱스, 종료 인덱스 3개의 인자를 추가하면
2개 인덱스 사이만큼 배열을 잘라서 리턴해줍니다.
import java.util.Arrays;
class Solution{
public int[] solution0(int[] numbers, int num1, int num2) {
return Arrays.copyOfRange(numbers,num1,num2+1);
}
}
| 해설
Arrays.copyOfRange 좋죠?
그런데 과연... 코딩테스트 시험장에서 평소에 잘 사용하지도 않는 메서드가 생각날까요?ㅎㅎ
직관적으로 코드를 짤 줄 아는 개발자가 더 좋은 개발자입니다.
'개발 > 개발 공부' 카테고리의 다른 글
[프로그래머스] 코딩테스트 입문 : 진료순서 정하기 (3) | 2024.09.20 |
---|---|
[프로그래머스] 코딩테스트 입문 : 외계행성의 나이 (3) | 2024.09.19 |
[프로그래머스] 코딩테스트 입문 : 짝수의 합 (0) | 2024.09.10 |
[프로그래머스] 코딩테스트 입문 : 양꼬치 (1) | 2024.09.09 |
[프로그래머스] 코딩테스트 입문 : 각도기 (0) | 2024.09.06 |
댓글