반응형
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 | package javaalgorithm; import java.util.Arrays; class Divisible { public int[] divisible(int[] array, int divisor) { int count = 0; for(int i=0;i<array.length;i++){ if(array[i] % divisor == 0) count++; } //ret에 array에 포함된 정수중, divisor로 나누어 떨어지는 숫자를 순서대로 넣으세요. int[] ret = new int[count]; int j=0; for(int i=0;i<array.length;i++){ if(array[i] % divisor == 0){ ret[j++] = array[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) )); } } | cs |
똑같은 수행을 반복하는게 마음에 걸렸지만 이 방법밖에 생각이 나지 않아서 이렇게 풀었다.
처음 for문은 array에 divisor로 나누어 떨어지는 값이 몇개인지를 세는 구문이다. 그 값을 ret의 배열 길이로 주고 다시 for문을 이용하여 ret에 array가 divisor로 나누어 떨어지는 값을 저장한다.
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 | package javaalgorithm; import java.util.Arrays; class Divisible { public int[] divisible(int[] array, int divisor) { int count = 0; for(int i=0;i<array.length;i++){ if(array[i] % divisor == 0) count++; } //ret에 array에 포함된 정수중, divisor로 나누어 떨어지는 숫자를 순서대로 넣으세요. int[] ret = new int[count]; int j=0; for(int i=0;i<array.length;i++){ if(array[i] % divisor == 0){ ret[j++] = array[i]; } if(j == count) break; } 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) )); } } | cs |
사소한 부분이지만 좋다고 생각한 부분이다.
if문을 이용해서 나누어 떨어지는 값을 모두 찾았다면 더이상 진행 할 필요없이 for문을 빠져나가는 방법이다.
배열이 길어지고 뒤에 저장하지 않아도 되는 값들이 많이 있다면 필요성이 커질 법한 구문이다.
'자바' 카테고리의 다른 글
가운데 글자 가져오기 (0) | 2016.11.17 |
---|---|
시저암호 (0) | 2016.11.17 |
문자열 내림차순으로 배치하기 (0) | 2016.11.14 |
삼각형 출력하기 (0) | 2016.11.14 |
String으로 입력받은 값의 최대,최소 구하는 문제 (0) | 2016.11.13 |