뭐라도 배우면 기록하자
[알고리즘 문제풀이] 나누어 떨어지는 숫자 배열 본문
문제 및 답안 출처: http://www.tryhelloworld.co.kr
문제
divisible 메소드는 int형 배열 array와 int divisor를 매개변수로 받습니다.
array의 각 element 중 divisor로 나누어 떨어지는 값만 포함하는 새로운 배열을 만들어서 반환하도록 divisible에 코드를 작성해 보세요.
예를들어 array가 {5, 9, 7, 10}
이고 divisor가 5이면 {5, 10}
을 리턴해야 합니다.
import java.util.Arrays;
class Divisible {
public int[] divisible(int[] array, int divisor) {
//ret에 array에 포함된 정수중, divisor로 나누어 떨어지는 숫자를 순서대로 넣으세요.
int[] ret = new int[나누어 떨어지는 숫자의 개수];
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) ));
}
}
나의 답
import java.util.Arrays; import java.util.ArrayList; class Divisible { public int[] divisible(int[] array, int divisor) { ArrayList<Integer> al = new ArrayList<>(); for(int i : array){ if(i % divisor == 0){ al.add(i); } } //ret에 array에 포함된 정수중, divisor로 나누어 떨어지는 숫자를 순서대로 넣으세요. int[] ret = new int[al.size()]; for (int j=0; j < ret.length; j++) { ret[j] = al.get(j); } 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) )); } }
저는 arrayList를 사용해서 add매소드를 썼는데 다른 몇몇 분들은 나누어 떨어지는 것을 확인해서 그 갯수만큼 배열을 만들고
다시 한번 더 나누어 떨어지는 것을 확인해서 만든 배열에 해당 숫자를 집어 넣는 알고리즘도 짜셨습니다.
다른 사람의 답
import java.util.Arrays; 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) )); } }
제 알고리즘에 비해서 참 짧네요;; 어느 정도 공부하면 저렇게 짧고 간결하게 코드를 작성할 수 있을까요. 제가 모르는 API가 많아도 너무 많은 것 같습니다.
'프로그래밍언어공부 > Java' 카테고리의 다른 글
[알고리즘 문제풀이] 피보나치 수 (0) | 2017.06.23 |
---|---|
[알고리즘 문제풀이] 행렬의 덧셈 (0) | 2017.06.23 |
[알고리즘 문제풀이] 문자열 내림차순으로 배치하기 (0) | 2017.06.22 |
[알고리즘 문제풀이] 서울에서 김서방찾기 (0) | 2017.06.22 |
[알고리즘 문제풀이] 수박수박수박수? (0) | 2017.06.22 |