코테/프로그래머스

[프로그래머스/Lv. 1] 나누어 떨어지는 숫자 배열

imname1am 2023. 2. 20. 14:16
반응형

내 코드

import java.util.*;

class Solution {
    public int[] solution(int[] arr, int divisor) {
          
        List<Integer> answer = new ArrayList<>();
        
        for(int i : arr) {
            if(i % divisor == 0) {
                answer.add(i);
            }
        }
        
        answer.sort(Comparator.naturalOrder());
        
        if(answer.size() == 0) answer.add(-1);
        
        return answer.stream().mapToInt(i -> i).toArray();
    }
}

일단 리스트를 만들어서 (6번째 줄)

arr에 있는 값이 divisor로 나누어 떨어지면 리스트에 arr의 값을 넣고, (8-12번째 줄)

이 리스트를 오름차순으로 정렬하고, (14번째 줄)

만약에 나누어 떨어지는 element가 하나도 없으면 배열에 -1을 담고, (16번째 줄)

이 리스트를 스트림으로 변환한 후 (.stream()) ,

map을 이용해 intStream을 가져오고 (.mapToInt(i -> i)),

.toArray()를 통해 배열로 만든다. (18번째 줄)

 

 

다른 분들 코드를 보았더니 stream의 filter를 사용하셨다.. 우와

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

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;
  }
}

(참고)

✔ 리스트 오름차순 정렬

 

Java :: ArrayList 정렬을 위한 sort 메소드 파해치기

개요 필자는 모 사이트에서 프로그래밍 문제를 해결하던 중, 입력된 데이터를 오름차순으로 정렬하여 리턴하라는 문제가 있어 해당 메소드에 대해 알아보았다. List에는 데이터 정렬을 위한 sort

manorgass.tistory.com

✔ 리스트를 배열로 변환

 

[Java] Integer ArrayList을 int 배열로 변환 방법

String 타입의 List를 배열로 변환할 때는 toArray()를 사용하면 변환할 수 있다. 하지만 int형과 같은 primitive 타입은 toArray()를 사용할 수 없다. 따라서 int형과 같은 primitive 타입은 아래의 방법을 통해

velog.io

 

반응형