TIL | [알고리즘] 나누어 떨어지는 숫자 배열(Java)

hyemin·2022년 3월 12일
0

알고리즘

목록 보기
14/38
post-thumbnail

THINKING

  1. 배열 arr을 돌며 나누기가 0인 경우 리스트에 추가하자 - for, list.add(i)
  2. list가 비웠다면 -1을 추가하자 - list.isEmpty()
  3. 배열 answer에 리스트값들 넣어주기
    • 배열 answer 크기 = list.size()
    • answer[j] = list.get[j]
  4. 배열 answer를 오름차순 정렬하기 - Arrays.sort(answer)

내 풀이

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class Solution {
    public int[] solution(int[] arr, int divisor) {
        int[] answer = {};
        List<Integer> list = new ArrayList<>();
        
        for (int i : arr) {
            if (i % divisor == 0) {
                list.add(i);
            }
        }
        
        if (list.isEmpty()) {
            list.add(-1);
        }
        
        answer = new int[list.size()];
        for (int j = 0; j < list.size(); j++) {
            answer[j] = list.get(j);
        }
        Arrays.sort(answer);     
        
        return answer;
    }
}

좋아요 많이 받은 풀이

import java.util.Arrays;

class Solution {
  public int[] solution(int[] arr, int divisor) {
          int[] answer = Arrays.stream(arr).filter(factor -> factor % divisor == 0).toArray();
          if (answer.length == 0) {
          	answer = new int[] {-1};
          }
          Arrays.sort(answer);
          return answer;
  }
}

배운 것

filter

자바에서 배열의 요소를 가공할 수 있는 것들은 map, filrter, sorted 등이 있는데 그중 filter는 조건에 맞는 요소만 나타내주는 역할은 한다.

++
map은 특정 조건에 맞을 때 요소를 다른 값으로 변환해주며,
sorted는 요소들을 정렬해준다.

사용법

List<String> list = Arrays.asList("a", "aa", "aaa", "aaaa");

Stream<String> stream = list.stream();
Stream<String> filter = stream.filter(t -> t.length() < 3);

filter.forEach(System.out::println);
a
aa

0개의 댓글

관련 채용 정보