Level1 나누어 떨어지는 숫자 배열

문제

divisible 메소드는 int형 배열 array와 int divisor를 매개변수로 받습니다.
array의 각 element 중 divisor로 나누어 떨어지는 값만 포함하는 새로운 배열을 만들어서 반환하도록 divisible에 코드를 작성해 보세요.

예를들어 array가 {5, 9, 7, 10}이고 divisor가 5이면 {5, 10}을 리턴해야 합니다.

풀면서 아 뭔가 더 쉽게 할 수 있는 분명히 좋은 코드가 있겠지 생각하고 일단 답 맞추고 다른 사람의 풀이를 봐보자 했는데 역시나 한 줄로 끝내버리는 코드가 있었다. 나는 지금 for문을 3번이나 돌리면서 풀어버렸다.. 조금더 열정적으로 생각하면서 풀어봐야겠다!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Divisible {
public int[] divisible(int[] array, int divisor) {
//ret에 array에 포함된 정수중, divisor로 나누어 떨어지는 숫자를 순서대로 넣으세요.

//처음 매개변수 배열을 담을 list 생성
List<Integer> list = new ArrayList<>();

for (int i=0; i<array.length; i++) {
list.add(array[i]);
}

List<Integer> list2 = new ArrayList<>();
//리스트를 divisor로 나누어 떨어지는 숫자를 넣음
for (int i=0; i<list.size(); i++) {
if (list.get(i) % divisor == 0) {
list2.add(list.get(i));
}
}

int[] ret = new int[list2.size()];

for (int i=0; i<list2.size(); i++) {
ret[i] = list2.get(i);
}

return ret;
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args) {
Divisible div = new Divisible();
int[] array = {5, 9, 7, 10};
System.out.println( Arrays.toString( div.divisible(array, 5) ));
}
}

다른 사람의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
class Divisible {
public int[] divisible(int[] array, int divisor) {
//ret에 array에 포함된 정수중, divisor로 나누어 떨어지는 숫자를 순서대로 넣으세요.
return Arrays.stream(array).filter(factor -> factor % divisor == 0).toArray();
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args) {
Divisible div = new Divisible();
int[] array = {5, 9, 7, 10};
System.out.println( Arrays.toString( div.divisible(array, 5) ));
}
}
Share