-
[Java 자바] 프로그래머스 Lv 0 - 약수 구하기Study/Java 2024. 11. 10. 20:54728x90반응형
코딩테스트 연습 | 프로그래머스 스쿨
개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!
school.programmers.co.kr
목차
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