728x90
문제
내 풀이
#오답
값은 맞게 나왔으나, 런타임 에러 발생
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
int[] answer = new int[num2];
int j = 0;
for(int i=num1; i<=num2; i++){
answer[j] = numbers[i];
j++;
}
return answer;
}
}
#정답
int[ ] answer = new int [num2] → int[ ] answer = new int[num2 - num1 +1];
answer 배열 변경하니 런타임 발생 에러 사라짐
- 왜 런타임 에러가 발생하는가? -> 범위 지정을 안해줘서
num2 - num1 +1는 범위 지정해주는 규칙? 임
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
int[] answer = new int[num2 - num1 +1];
int j = 0;
for(int i=num1; i<num2+1; i++){
answer[j] = numbers[i];
j++;
}
return answer;
}
}
다른 사람 풀이
Arrays.copOf(복사할 배열, 복사할 배열의 크기)
: Arrays메서드를 활용하여 배열 복사
→ 복사받는 배열이 복사하는 배열보다 범위를 크게 지정해주면 해당 초과하는 범위는 배열의 값은 default:0값이 들어가게 된다.
Arrays.copOfRange(복사할 배열, 복사시작 인덱스, 복사 끝 인덱스(-1))
복사하고자 하는 범위만 지정해서 복사
#1
import java.util.*;
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
return Arrays.copyOfRange(numbers, num1, num2 + 1);
}
}
참조
https://velog.io/@tsun0705/Java-%EB%B0%B0%EC%97%B4-%EB%B3%B5%EC%82%AC-copyOf-copyOfRange
'알고리즘 > SQL 풀이' 카테고리의 다른 글
프로그래머스| 0단계 삼각형의 완성조건(1) (5) | 2023.06.15 |
---|---|
프로그래머스| 0단계 문자열 뒤집기 (0) | 2023.06.14 |
프로그래머스| 0단계 배열 원소의 길이 (0) | 2023.06.04 |
프로그래머스| 0단계 양꼬치 (0) | 2023.06.03 |
프로그래머스| 0단계 배열의 평균 (0) | 2023.06.03 |