*모든 풀이 코드는 직접 작성하였습니다.
문제
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
제한사항
arr은 자연수를 담은 배열입니다.
정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
divisor는 자연수입니다.
array는 길이 1 이상인 배열입니다.
문제 풀이
배열의 요소 중 조건에 맞는 요소들을 오름차순으로 정렬한 배열을 반환하면 된다.
나는 for-each문을 사용해서 배열을 순회한 후, 조건에 맞는 요소를 ArrayList를 만들어 넣었다. 조건에 맞는 요소의 수를 알 수 없으므로 배열 대신 ArrayList를 사용했다.
오름차순으로 정렬 후 ArrayList를 Stream을 사용해서 배열로 변환해서 반환하면 끝이다.
+Stream으로만 풀어도 봤다.
풀이 코드
- for-each 문
import java.util.*;
class Solution {
public int[] solution(int[] arr, int divisor) {
ArrayList<Integer> list = new ArrayList<Integer>();//새 ArrayList 선언
for(int a : arr){ //for-each문 순회
if(a % divisor == 0){
list.add(a);
}
}
if(list.size() == 0) { //조건에 맞는 요소가 하나도 없다면 -1담은 배열 반환
int[] noResult = {-1};
return noResult;
}
//순회 후 오름차순 정렬
Collections.sort(list);
//ArrayList -> 배열 변환후 반환
int[] result = list.stream().mapToInt(Integer::intValue).toArray();
return result;
}
}
- Stream 사용
import java.util.*;
class Solution {
public int[] solution(int[] arr, int divisor) {
int[] result = Arrays.stream(arr)
.filter(n -> n % divisor == 0) // 나눠 떨어지는 것만 필터링
.sorted() //오름차순 정렬
.toArray(); //배열로 변환
if (result.length == 0) {
result = new int[] {-1};
}
return result;
}
}
'Coding Test' 카테고리의 다른 글
Programmers - 음양 더하기 (Java) (Lv.1) (0) | 2023.12.19 |
---|---|
Programmers - 핸드폰 번호 가리기 (Java) (Lv.1) (0) | 2023.12.19 |
Programmers - 서울에서 김서방 찾기 (Java) (Lv.1) (1) | 2023.12.19 |
Programmers - 콜라츠 추측 (Java) (Lv.1) (1) | 2023.12.19 |
Programmers - 두 정수 사이의 합 (Java) (Lv.1) (0) | 2023.12.19 |