ygreenb
yellowgreenblue
ygreenb
전체 방문자
오늘
어제
  • TIL (130)
    • Algorithm & Data Structure (70)
      • 이론 (4)
      • 프로그래머스 (54)
      • 백준 (12)
    • JAVA (4)
    • Android Studio (9)
    • Database (1)
    • WEB (25)
      • HTML+CSS (7)
      • Javascript (5)
      • React (11)
      • Django (1)
      • Node.js (1)
    • Computer Vision (13)
    • Git (8)

블로그 메뉴

  • HOME
  • TAG
  • GITHUB

공지사항

인기 글

태그

  • compareTo()
  • kotiln
  • entrySet
  • 프로그래머스 Lv.2
  • Queue
  • sort
  • git
  • Comparator
  • 깃
  • HashMap
  • PriorityQueue
  • dfs
  • 해시
  • greedy
  • getOrDefault
  • stack
  • 백준
  • 프로그래머스
  • 안드로이드
  • Arrays.sort()
  • React
  • 깃허브
  • Android
  • 코틀린
  • BFS
  • reactjs
  • java
  • 스택/큐
  • git bash
  • DP

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ygreenb

yellowgreenblue

Algorithm & Data Structure/프로그래머스

[JAVA] 프로그래머스 : 나누어 떨어지는 숫자 배열

2022. 1. 31. 00:01

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

 

코딩테스트 연습 - 나누어 떨어지는 숫자 배열

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하

programmers.co.kr

 

풀이

ArrayList 를 정렬하는데는 Collections.sort() 메소드를 사용했다. sort() 메소드의 인자로 정렬할 리스트를 넘겨준다.

import java.util.ArrayList; 
import java.util.Collections;

class Solution {
    public int[] solution(int[] arr, int divisor) {
        ArrayList<Integer> list = new ArrayList<>();
        int[] answer;
        for (int a : arr){
            if (a % divisor == 0){
                list.add(a);
            }
        }
        if (list.size() == 0) {
            answer = new int[1];
            answer[0] = -1;
        }
        else{
            Collections.sort(list); // 정렬
            answer = new int[list.size()];
            for (int i = 0 ; i<list.size(); i++){
                answer[i] = list.get(i);
            }
        }
        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};
          java.util.Arrays.sort(answer);
          return answer;
  }
}

스트림을 사용하는데 filter() 함수와 람다식을 사용해서 처음부터 한줄코드로 간결하게 작성했다.

스트림은 자바8부터 추가된 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자고,
filter()는 말 그대로 스트림내 요소에 대해서 필터링하는 작업을 하는 함수다.

저작자표시 (새창열림)

'Algorithm & Data Structure > 프로그래머스' 카테고리의 다른 글

[Java] 프로그래머스 : 제일 작은 수 제거하기  (0) 2022.01.31
[Java] 프로그래머스 : 같은 숫자는 싫어  (0) 2022.01.31
[JAVA] 프로그래머스 : 자릿수 더하기  (0) 2022.01.21
[JAVA] 프로그래머스 : 약수의 합  (0) 2022.01.21
[JAVA] 프로그래머스 : 정수 제곱근 판별  (0) 2022.01.21
    'Algorithm & Data Structure/프로그래머스' 카테고리의 다른 글
    • [Java] 프로그래머스 : 제일 작은 수 제거하기
    • [Java] 프로그래머스 : 같은 숫자는 싫어
    • [JAVA] 프로그래머스 : 자릿수 더하기
    • [JAVA] 프로그래머스 : 약수의 합
    ygreenb
    ygreenb
    개발공부기록장

    티스토리툴바