등차수열 배열을 구하는 문제이다. 반환값은 long[]이다.
class Solution {
public long[] solution(int x, int n) {
long[] answer = new long[n];
long firstNum = x;
for(int i=0; i<n; i++) {
answer[i] = firstNum;
firstNum += x;
}
return answer;
}
}
class Solution {
public long[] solution(int x, int n) {
long[] answer = new long[n];
for(int i=0; i<n; i++) {
answer[i] = x * (i+1);
}
return answer;
}
}
x * (i+1)은 int와 int를 곱한 값이다. x는 -10000000 <= x <= 10000000 의 범위이고, n은 1000 이하의 자연수이고, x의 최대값과 n의 최대값을 곱한 경우 10,000,000,000 이다. int의 범위는 -2,147,483,648 ~ 2,147,483,647 로 이 범위를 초과하기 때문에 오버플로우가 일어난다. 오버플로우로 데이터의 오류가 발생하여 테스트케이스 에러가 발생했다. class Solution {
public long[] solution(int x, int n) {
long[] answer = new long[n];
long answer[0] = x;
for(int i=1; i<n; i++) {
answer[i] = answer[i-1] + x;
}
return answer;
}
}
오버플로우
메모리의 표현 범위에서 벗어난 수의 값을 할당하게 되는 경우이다.
형변환
값의 자료형을 바꾸는 것.
자동 형변환 : 컴파일러가 자동으로 값의 범위가 작은 자료형을 값의 범위가 큰 자료형으로 변환
강제 형변환 : 값의 범위가 큰 자료형을 값의 범위가 작은 자료형으로 형변환