알고리즘
[Programmers]나누어 떨어지는 숫자 배열(난이도:★★★)
BaekGyuHyeon
2022. 5. 16. 18:00
https://programmers.co.kr/learn/courses/30/lessons/12910
코딩테스트 연습 - 나누어 떨어지는 숫자 배열
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하
programmers.co.kr
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr, int divisor) {
// stream 사용하기
// int[] answer =Arrays.stream(arr).filter(e->e%divisor == 0).sorted().toArray();
// return answer.length ==0?new int[]{-1}:answer;
return anotherSolution(arr,divisor);
}
// 다른 해법
public int[] anotherSolution(int[] arr,int divisor){
int[] tmp = new int [arr.length];
int idx = 0;
int count = 0;
// 나누어 떨어지는 숫자만 남기기
for(int i : arr ){
if(i % divisor == 0){
tmp[idx] = i;
idx++;
count++;
}
}
// 공백 배열 제거하기
int[] answer = new int[count==0?1:count];
if(count == 0){
answer[0] = -1;
return answer;
}else{
for(int i = 0 ; i < answer.length; i++){
answer[i] = tmp[i];
}
}
// 정렬하기
int idxs = answer.length-1;
for(int i = 0 ; i < answer.length-1; i++){
for(int j = 0; j < idxs; j++){
if(answer[j] > answer[j+1]){
int tmps = answer[j];
answer[j] = answer[j+1];
answer[j+1] = tmps;
}
}
idxs--;
}
return answer;
}
}