class Solution {
public long[] solution(int x, int n) {
long[] answer = new long[n];
for(int i=0;i<n;i++){
answer[i]=(long) x*(i+1);
}
return answer;
}
}
처음에는 answer[i]= x*(i+1);
이라고만했는데, 실패케이스가 생겼다.
n와 x 모두 int 범위인데 어느 부분에서 실패가 생긴 것 일까...
하다가 이 둘이 곱해지면 오버플로우가 발생하겠구나~ 싶었다.
전체를 괄호해버리면 이미 오버플로우가 일어난 상태이므로, answer[i]=(long) x * (i+1);
는 x만 (long) 으로 바꿔준 코드이다.
스터디의 다른 분께서 '에라토스테네스의 체'라는 것을 이용해서 문제를 풀어오셨다.
처음 보는 부분이라 공부가 좀 필요했지만, 정말 신기하다!