-
프로그래머스 - 나누어 떨어지는 숫자 배열알고리즘 2022. 6. 13.반응형
내 풀이
import java.util.Arrays;public class P_28 {public int[] solution(int[] arr, int divisor) {int cnt = 0;for(int i=0; i<arr.length; i++) {if(arr[i] % divisor == 0) {cnt++;}}if(cnt == 0) {return new int[] {-1};}int[] answer = new int[cnt];cnt = 0;for(int j=0; j<arr.length; j++) {if(arr[j] % divisor == 0) {answer[cnt] = arr[j];cnt++;}}Arrays.sort(answer);return answer;}public static void main(String[] args) {// 나누어 떨어지는 숫자 배열P_28 p = new P_28();int[] arr = {3,2,6};int div = 10;int[] ans = p.solution(arr, div);System.out.println(Arrays.toString(ans));}}조금 무식하게 푼 방법
배열의 방 크기 때문에 for문을 한번 더 돌렸다.
// 람다 stream filter 사용public int[] sol2(int[] arr, int divisor) {int[] ans = Arrays.stream(arr).filter(x -> x % divisor == 0).toArray();// arr 배열을 Arrays stream을 생성하고 filter를 통해 원하는 조건을 걸러낸다.// toArray() = ArrayList의 요소를 새 배열에 복사함.if(ans.length == 0) {return new int[] {-1};} else {Arrays.sort(ans);}return ans;}람다를 활용하면 간단하게 풀 수 있다.
for문을 돌려가면서 해야 할 작업을 stream 객체를 만들어 filter() 메소드를 이용해서 걸러내면 된다.
반응형'알고리즘' 카테고리의 다른 글
프로그래머스 - 가운데 글자 가져오기 (0) 2022.06.26 프로그래머스 - 같은 숫자는 싫어 (0) 2022.06.14 프로그래머스 - 두 정수 사이의 합 (0) 2022.06.11 프로그래머스 - 문자열 내 p와 y의 개수 (0) 2022.06.09 프로그래머스 - 문자열 내 마음대로 정렬하기 (0) 2022.06.09