import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class Q14 {
public int[] solutionQ14(int[] arr, int divisor) {
ArrayList<Integer> arrayList = new ArrayList<>();
int[] answer = {};
for (int i = 0; i < arr.length; i++) {
if (arr[i] % divisor == 0) {
arrayList.add(arr[i]);
Collections.sort(arrayList);
} else if (arr[i] % divisor != 0) {
if (arrayList.size() == 0) {
arrayList.add(-1);
}
}
}
// 1번째
System.out.println(arrayList);
answer = new int[arrayList.size()];
int size = 0;
for (int temp : arrayList) {
answer[size++] = temp;
}
return answer;
}
}
광탈....
문제 접근
임의의 숫자 배열을 입력받아서 divisor로 나눠떨어지면 return으로 해당 숫자의 배열을 출력하는 문제였다.
이게 끝인데 아무리 고쳐봐도 원인이 안보였다.
원인
나누에 떨어지는 element가 하나도 없다면 -1을 반환하세요
array는 길이 1이상인 배열입니다.!!!!!!!!!!
내 코드를 자세히 보니까 이상하다.
해당 인덱스의 숫자가 divisor로 선언한 숫자와 나누어지지 않으면 긜고
arraylist가 비어있으면 -1을 출력해라.
즉 divisor로 나눠 지는 값이 없어서 arraylist가 0이 되어야 -1을 출력해야하는데 나는 조건 문을 넣음으로써 해당 조건을 만족하여야 또 arraylist가 0일때 -1을 반환하는 이상한 코드를 짜버렸다.
for (int i = 0; i < arr.length; i++) {
if (arr[i] % divisor == 0) {
arrayList.add(arr[i]);
Collections.sort(arrayList);
} else if (arr[i] % divisor != 0) {
if (arrayList.size() == 0) {
arrayList.add(-1);
}
}
}
문재 재접근
if (arrayList.size() == 0) {
arrayList.add(-1);
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
class Solution {
public int[] solution(int[] arr, int divisor) {
ArrayList<Integer> arrayList = new ArrayList<>();
int[] answer = {};
for (int i = 0; i < arr.length; i++) {
if (arr[i] % divisor == 0) {
arrayList.add(arr[i]);
Collections.sort(arrayList);
}
}
if (arrayList.size() == 0) {
arrayList.add(-1);
}
answer = new int[arrayList.size()];
int size = 0;
for (int temp : arrayList) {
answer[size++] = temp;
}
return answer;
}
}
해답 코드
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class Q14 {
public int[] solutionQ14(int[] arr, int divisor) {
int[] answer = {};
ArrayList<Integer> a1 = new ArrayList<Integer>();
for(int i=0; i<arr.length; i++) {
if(arr[i]%divisor==0){
a1.add(arr[i]);
}
}
if(a1.isEmpty()) {
a1.add(-1);
}
answer = new int[a1.size()];
for(int i=0; i<a1.size(); i++) {
answer[i] = a1.get(i);
}
Arrays.sort(answer);
return answer;
}
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class Q14 {
public int[] solutionQ14(int[] arr, int divisor) {
ArrayList<Integer> arrayList = new ArrayList<>();
int[] answer = {};
for (int i = 0; i < arr.length; i++) {
if (arr[i] % divisor == 0) {
arrayList.add(arr[i]);
Collections.sort(arrayList);
} else if (arr[i] % divisor != 0) {
if (arrayList.size() == 0) {
arrayList.add(-1);
}
}
}
// 1번째
System.out.println(arrayList);
answer = new int[arrayList.size()];
int size = 0;
for (int temp : arrayList) {
answer[size++] = temp;
}
return answer;
}
}
for (int i = 0; i < arr.length; i++) {
if (arr[i] % divisor == 0) {
arrayList.add(arr[i]);
Collections.sort(arrayList);
} else if (arr[i] % divisor != 0) {
if (arrayList.size() == 0) {
arrayList.add(-1);
}
}
}