-
프로그래머스 - 나누어 떨어지는 숫자 배열알고리즘 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