문제
내가 작성한 정답
ArrayList → Array
import java.util.ArrayList;
import java.util.List;
class Solution {
public int[] solution(int n) {
List<Integer> a = new ArrayList<>();
for(int i=1; i<=n; i++){
if(n%i==0){
a.add(i);
}
}
return a.stream().mapToInt(i->i).toArray();
}
}
//streamAPI사용하지 않고 ArrayList -> Array로 변환
int[] answer = new int[a.size()];
for(int i = 0; i<a.size(); i++){
answer[i] = a.get(i);
}
return answer;
}
}

int[] answer = {}; - 빈 배열을 선언
int[] answer 크기를 초기화 하지 않고 넣으면 배열이 비어있어 배열의 인덱스가 배열의 크기를 초과하여 오류가 발생한다.
StreamAPI
import java.util.stream.IntStream;
class Solution {
public int[] solution(int n) {
return IntStream.rangeClosed(1, n)
.filter(i -> n%i == 0)
.toArray();
}
}
다른 사람들이 작성한 정답
ArrayList 사용하지 않음
class Solution {
public int[] solution(int n) {
int[] answer = new int[n];
int cnt = 0;
for (int i = 1; i <= n; i++) {
if (n % i == 0) {
//answer[cnt] = i;
cnt++;
}
}
answer = new int[cnt];
cnt = 0;
for (int i = 1; i <= n; i++) {
if (n % i == 0) {
answer[cnt] = i;
cnt++;
}
}
return answer;
}
}
Share article