S.S.G
나누어 떨어지는 숫자 배열 본문
[문제]
divisible 메소드는 int형 배열 array와 int divisor를 매개변수로 받습니다.
array의 각 element 중 divisor로 나누어 떨어지는 값만 포함하는 새로운 배열을 만들어서 반환하도록 divisible에 코드를 작성해 보세요.
예를들어 array가 {5, 9, 7, 10}
이고 divisor가 5이면 {5, 10}
을 리턴해야 합니다.
-우선 나누어떨어지는 숫자의 개수를 알아내어 ret[]의 길이를 그 개수로 지정하고, 나누어떨어지는 숫자를 하나씩 불러오도록 계획하였...지만 이 문제를 해결하는데 시간이 많이 걸렸다.
문제의 답은 5와 10 이 두 개이다. ret[] 의 길이는 index를 이용하여 쉽게 불러왔는데 ret[]에 그 값들을 순서대로 불러오는 과정에서 어렵게 생각하여 너무 시간이 많이 걸렸다. 단순하게 ret[count++] 를 해주면 되는데 ret[i]라는 생각에 사로잡혀
ArrayIndexOutOfBoundsException 에러만 계속 나오게 하였다.. 그래도 해결해서 속이 시원하다..ㅎㅎ
import java.util.Arrays;
class Test {
public int[] divisible(int[] array, int divisor) {
int index = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] % divisor == 0)
index++;
}
int[] ret = new int[index];
int count = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] % divisor == 0)
ret[count++] = array[i];
}
return ret;
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args) {
Test div = new Test();
int[] array = { 5, 9, 7, 10 };
System.out.println(Arrays.toString(div.divisible(array, 5)));
}
}
실행 결과
[5, 10]
1.
public int[] divisible(int[] array, int divisor) {
ArrayList<Integer> arrayList = new ArrayList<>();
for(int i : array){
if(i%divisor == 0)
arrayList.add(i);
}
int[] ret = new int[arrayList.size()];
for(int n =0; n<ret.length;n++){
ret[n] = arrayList.get(n);
}
return ret;
}
- 다른사람의 답변이다. ArrayList<Integer>를 사용하여 값을 넣고 쉽게 불러왔다.
★ for(int num : array) {} --> for each 문의 형식(JDK 5.0버전부터 향상됨)
for(변수타입 변수이름 : 배열이름) {}
▷ int num
-> 배열에 들어있는 한 원소의 값을 저장해 둘 변수를 선언한 것이다. 매번 순환문이 반복될때 마다 num에 배열 원소 값이 대입이 된다.
▷ : (콜론)
-> 왼쪽에 있는 변수에 오른쪽에 있는 배열의 각 원소값이 대입이 된다는 뜻이다.
▷ array
-> for 문에서 순환문을 돌릴 대상이 되는 배열
예제) 배열 출력하기
1. 일만 for 문
class Test {
public static void main(String[] args) {
int array[] = {10,20,30,40,50,60};
for(int i=0; i<array.length; i++){
System.out.println(array[i]);
}
}
2. 향상된 for 문
class Test {
public static void main(String[] args) {
int array[] = {10,20,30,40,50,60};
for(int num : array){
System.out.println(num);
}
}
[문제 및 답안 출처: 헬로월드 (http://tryhelloworld.co.kr)]
'코딩 > 알고리즘' 카테고리의 다른 글
가운데 글자 가져오기 (0) | 2016.07.11 |
---|---|
평균 구하기 (0) | 2016.07.07 |
문자열 내림차순으로 배치하기 (0) | 2016.07.05 |
짝수와 홀수 (0) | 2016.07.05 |
최대값 최소값 구하기 (0) | 2016.07.05 |