내 코드 - 오답
class Solution {
public long[] solution(int x, int n) {
long[] answer = {};
answer = new long[n];
for (int i = 0; i < n; i++) {
/**
* 여기서 answer[i]에는 int가 들어감
*
* 따라서 만약,
* x * (i + 1)이 int 범위를 초과한다면 엉뚱한 값이 들어감
*/
answer[i] = x * (i + 1);
}
return answer;
}
}
문제에서 -10,000,000 <= x <= 10,000,000 이고,
int형 변수의 범위는 -2,147,483,648 ~ 2,147,483,647 이다.
따라서 가령,
x = 10,000,000, n = 1,000 이라면
x * (i + 1) = 10,000,000 * 1,000 = 10,000,000,000 와 같이 int형 범위를 초과하게 된다.
아래와 같이 long 타입으로 변환시켜 주어야 한다.
class Solution {
public long[] solution(int x, int n) {
long[] answer = {};
answer = new long[n];
for (int i = 0; i < n; i++) {
answer[i] = Long.valueOf(x) * (i + 1);
}
return answer;
}
}
'프로그래머스' 카테고리의 다른 글
프로그래머스 - 행렬의 덧셈 (0) | 2019.01.08 |
---|---|
프로그래머스 - 직사각형 별찍기 (0) | 2019.01.08 |
프로그래머스 - 나누어 떨어지는 숫자 배열 (0) | 2019.01.08 |
프로그래머스 - 문자열 내 p와 y의 개수 (0) | 2019.01.08 |
프로그래머스 - 가운데 글자 가져오기 (0) | 2019.01.08 |