본문 바로가기
Algorithm/프로그래머스

[프로그래머스]연습문제 : 나누어 떨어지는 숫자 배열 (level 1)

by HBGB 2019. 11. 6.

https://programmers.co.kr/learn/courses/30/lessons/12910

 

코딩테스트 연습 - 나누어 떨어지는 숫자 배열 | 프로그래머스

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 제한사항 arr은 자연수를 담은 배열입니다. 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다. divisor는 자연수입니다. array는 길이 1 이상인 배열입니다. 입출력 예 arr divi

programmers.co.kr

 

방법 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
 
class Solution {
      public int[] solution(int[] arr, int divisor) {
          
          // list에 나누어 떨어지는 요소 저장
          List<Integer> list = new ArrayList<Integer>(); 
          
          for (int i = 0; i < arr.length; i++) {
              if(arr[i] % divisor == 0) {
                  list.add(arr[i]);
              }
          }
          
          // list가 비어있으면 -1 하나가 담긴 배열 리턴
          int count = list.size();
          if (count == 0) {
              return new int[]{-1};
          }
          
          // list -> int배열
          int[] answer = new int[count];
          for (int i = 0; i < count;i++) {
              answer[i] = list.get(i);
          }
          
          // 정렬
          Arrays.sort(answer);
          
          return answer;
      }
}
Colored by Color Scripter

 

방법 2: 람다를 사용한 다른분 답안

1
2
3
4
5
6
7
8
import java.util.Arrays;
 
class Solution {
      public int[] solution(int[] arr, int divisor) {
        
          return Arrays.stream(arr).filter(factor -> factor % divisor == 0).toArray();
      }
}
Colored by Color Scripter

 

 

어려운 문제는 아니지만,

역시나 신기하게 풀이하신 분이 있어서 공유한다.

 

아직 자바 람다를 잘 모르기 때문에 ㅠㅠ

내공이 쌓이면 다시 돌아오는 것으로...

 

 

댓글