개발하는 고양이 오이

22. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 - 나누어 떨어지는 숫자 배열 / 다른 사람의 풀이 본문

코딩테스트 - JAVA/프로그래머스 Programmers

22. [JAVA] 프로그래머스 코딩테스트 연습 Level.1 - 나누어 떨어지는 숫자 배열 / 다른 사람의 풀이

Cucum 2022. 5. 2. 18:01

https://programmers.co.kr/learn/challenges

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

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


 


풀이

import java.util.*;

class Solution {
    public int[] solution(int[] arr, int divisor) {
        int[] answer = {0};
        
        ArrayList<Integer> list = new ArrayList<Integer>();

        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] % divisor == 0) {
                list.add(arr[i]);           // list에 추가
                count++;            // 나누어 떨어지는 element가 하나도 없을 경우를 대비해 count값 계산
            }
        }
        
        if (count != 0) {       // 나누어 떨어지는 element가 하나라도 존재한다면
            answer = new int[list.size()];          // answer배열의 크기는 list의 크기만큼
            for (int i = 0; i < list.size(); i++) {
                answer[i] = list.get(i);
            }

            Arrays.sort(answer);        // 오름차순 정렬 함수 이용
        }
        else {              // 나누어 떨어지는 element가 하나도 없다면
            answer = new int[1];        // answer배열의 크기는 1만큼
            answer[0] = -1;
        }
        
        return answer;
    }
}

 


다른 사람의 풀이

 

Arrays.stream

= 스트림은 자바8부터 추가된 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자.

   Iterator와 비슷한 역할을 하지만 람다식으로 요소 처리 코드를 제공하여 코드가 좀 더 간결하게 할 수 있음

                                             + 내부 반복자를 사용하므로 병렬처리가 쉬움

출처 : https://coding-factory.tistory.com/574

 

* Iterator과 Stream의 코드 비교 출처 = https://coding-factory.tistory.com/574

 

[Java] 자바 스트림(Stream) 사용법 & 예제

스트림(Stream)이란? 스트림은 자바8부터 추가된 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자입니다. Iterator와 비슷한 역할을 하지만 람다식으로 요소 처리

coding-factory.tistory.com