나누어 떨어지는 숫자 배열
xdivisible 메소드는 int형 배열 array와 int divisor를 매개변수로 받습니다.
array의 각 element 중 divisor로 나누어 떨어지는 값만 포함하는 새로운 배열을 만들어서 반환하도록 divisible에 코드를 작성해 보세요.
예를들어 array가 {5, 9, 7, 10}이고 divisor가 5이면 {5, 10}을 리턴해야 합니다.
array에서 divisor로 나누어지는 수가 몇 개인지 알 수 없어서 ArrayList
를 이용했다. 반복문을 이용해서 각각의 수가 나누어지는 지를 확인한 뒤, 나누어 떨어지는 값만 리스트에 저장해 배열로 옮겼다.
ArrayList
클래스는 알아서 배열로 바꾸어주는 toArray()
메소드를 지원하지만, 이렇게 배열로 바꾸면 Object 타입의 배열로 변환되어서 int 배열로 바로 대입이 불가하다. 물론 (Integer[]) list.toArray()
로 바꾸어 Integer 타입의 배열로 캐스팅해줄 수 있겠지만 이 또한 int 배열로 대입이 불가하다. 그래서 불가피하게 int 배열을 리스트와 같은 크기로 선언하고, 리스트의 값을 하나씩 넣어주었다.
xxxxxxxxxx
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Divisible {
public int[] divisible(int[] array, int divisor) {
//ret에 array에 포함된 정수중, divisor로 나누어 떨어지는 숫자를 순서대로 넣으세요.
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < array.length; i++) {
if (array[i] % divisor == 0)
list.add(array[i]);
}
int[] ret = new int[list.size()];
for (int i = 0; i < ret.length; i++) {
ret[i] = list.get(i);
}
return ret;
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args) {
Divisible div = new Divisible();
int[] array = {5, 9, 7, 10, 11, 25, 59, 100};
System.out.println( Arrays.toString( div.divisible(array, 5) ));
}
}
'공부 > algorithm' 카테고리의 다른 글
[programmers] 행렬의 곱셈 (0) | 2018.05.22 |
---|---|
[programmers] 콜라츠 추측 (0) | 2018.05.22 |
[programmers] 행렬의 덧셈 (0) | 2018.05.21 |
[programmers] 문자열 내림차순으로 배치하기 (0) | 2018.05.21 |
[programmers] 삼각형출력하기 (0) | 2018.05.21 |
댓글