-
[Java 자바] 프로그래머스 Lv 0 - 약수 구하기Study/Java 2024. 11. 10. 20:54728x90반응형
목차
1. 문제 설명
728x90문제 설명
정수 n이 매개변수로 주어질 때,
n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n ≤ 10,000
2. 입출력 예시
입출력 예시
#1
24의 약수를 오름차순으로 담은 배열 [1, 2, 3, 4, 6, 8, 12, 24]를 return합니다.
#2
29의 약수를 오름차순으로 담은 배열 [1, 29]를 return합니다.
3. 문제 풀이
반응형문제 풀이
1. 리스트 array를 생성한다.
2. 반복문을 통해서 1부터 n까지 반복하며, 약수를 array 리스트에 추가한다.
3. array 리스트를 배열로 변환하여 출력한다.
import java.util.*; class Solution { public int[] solution(int n) { ArrayList<Integer> array = new ArrayList<>(); for(int i=1; i<=n; i++){ if(n%i==0){ array.add(i); } } return array.stream().mapToInt(Integer::intValue).toArray(); } }
메모
int 형과 같은 primitive타입은 toArray()를 사용할 수 없다.
리스트 변환 방법public static void main(String args[]) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); // 방법 1 : 반복문 사용 int[] arr1 = new int[list.size()] for (int i = 0; i < list.size(); i++) arr1[i] = list.get(i).intValue(); // 방법 2 : stream 사용 (1) int[] arr2 = list.stream() .mapToInt(i -> i) .toArray(); // 방법 3 : stream 사용 (2) int[] arr3 = list.stream() .mapToInt(Integer::intValue) .toArray(); // 방법 4 : stream 사용 with filter int[] arr4 = list.stream() .filter(i -> i != null) .mapToInt(i -> i) .toArray(); }
728x90반응형'Study > Java' 카테고리의 다른 글
[Java 자바] 프로그래머스 Lv 0 - 가장 큰 수 찾기 (1) 2024.11.12 [Java 자바] 프로그래머스 Lv 0 - 편지 (0) 2024.11.11 [Java 자바] 프로그래머스 Lv 0 - 한 번만 등장한 문자 (1) 2024.11.09 [Java 자바] 프로그래머스 Lv 0 - 인덱스 바꾸기 (0) 2024.11.08 [Java 자바] 프로그래머스 Lv 0 - 영어가 싫어요 (0) 2024.11.07