나누어 떨어지는 숫자 배열
1. 처음 소스
package programmers_uni;
class Solution {
public static int[] solution(int[] arr, int divisor) {
int i;
int n=0;
int cnt=0;
for(i=0;i<arr.length;i++){
if(arr[i]%divisor==0){
n++;
}
}
int[] answer= new int[n];
for(i=0;i<arr.length;i++){
if(arr[i]%divisor==0){
answer[cnt]=arr[i];
cnt++;
}
}
if(cnt==0){
answer[cnt]=-1;
}
return answer;
}
public static void main(String[] args) {
int[] arr= {5,9,7,10};
int divisor= 5;
System.out.print(solution(arr, divisor));
}
}
1-1.결과
[I@3d4eac69
-> 문자열 배열을 리턴할때에는 그대로 리턴하면 안됨.
2. 두 번째 소스
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr, int divisor) {
int i;
int n=0;
int cnt=0;
for(i=0;i<arr.length;i++){
if(arr[i]%divisor==0){
n++;
}
}
int[] answer = new int [n];
for(i=0;i<arr.length;i++){
if(arr[i]%divisor==0){
answer[cnt]=arr[i];
cnt++;
}
}
if(cnt==0){
answer[cnt]=-1;
}
Arrays.sort(answer);
return answer;
}
}
2-2.결과
3. 성공 소스
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr, int divisor) {
int i;
int n=0;
int cnt=0;
for(i=0;i<arr.length;i++){
if(arr[i]%divisor==0){
n++;
}
}
int[] answer = new int [n];
for(i=0;i<arr.length;i++){
if(arr[i]%divisor==0){
answer[cnt]=arr[i];
cnt++;
}
}
if(cnt==0){
int[] ans = new int [1];
//-1만을 담을 배열을 따로 생성해야 에러 발생 방지
ans[cnt]=-1;
answer=ans;
}
Arrays.sort(answer);
return answer;
}
}
4. 다른 해결 방안
- 배열에 원소를 쉽게 추가하기 위해 ArrayList 사용
- 배열의 원소를 for문 없이 쉽게 출력하기 위해 Arrys.toString(배열) 사용
'개발 > JAVA' 카테고리의 다른 글
[JAVA 백준] 10817. 세 수 (0) | 2019.11.20 |
---|---|
[JAVA] level1. 같은 숫자는 싫어 (0) | 2019.11.20 |
[JAVA] level1 . 정수 제곱근 판별 / Math.sqrt(n), Math.pow(n,m) (0) | 2019.01.23 |
[JAVA] level1 . 핸드폰 번호 가리기 / substring(), String ""+"" (0) | 2019.01.23 |
[JAVA] level1 . 약수의 합 (0) | 2019.01.23 |