본문 바로가기
프로그래머스 문제풀어보기

[Lv.0] 약수 구하기

by dantriss 2023. 3. 2.


https://school.programmers.co.kr/learn/courses/30/lessons/120897

정수 n이 어떤 수 인지 모르기 때문에 몇개의 약수를 가지고 있는지 알 수 없다.

그렇기 때문에 고정된 길이를가진 배열을 사용하지 않고 가변배열인 ArrayList를 사용하여 answerList라는 변수명으로 선언한다.

반복문을 사용해 1부터 시작해 정수 n까지 반복하는데 정수 n이 1부터시작해서 1씩 증가하는 i 와 나누었을 때 몫이 0인것이 

정수 n의 약수라고 할 수 있으니 해당 i 들을 arrayList에 add한다.

이 상태로 실행을 했을 때 메서드의 형식이 맞지 않아 오류가 뜨게 된다.

이제 형변환을 해줄 것이다. stream을 활용해 ArrayList를 Array로 형변환 한다.

.stream().mapToInt(i -> i).toArray() 

import java.util.*;
class Solution {
    public int[] solution(int n) {
        ArrayList<Integer> answerList = new ArrayList();
        
        for(int i=1; i<=n; i++){
            if(n%i==0){
                answerList.add(i);
            }
        }

        return answerList.stream().
                mapToInt(i -> i).toArray();

    }
}

 

물론 메서드의 형식을 바꾸면 answerList로 리턴을 해줘도 상관은 없다.

import java.util.*;
class Solution {
    public ArrayList<Integer> solution(int n) {
        ArrayList<Integer> answerList = new ArrayList();
        
        for(int i=1; i<=n; i++){
            if(n%i==0){
                answerList.add(i);
            }
        }

        
        // return answerList.stream().
        //         mapToInt(i -> i).toArray();
        
        return answerList;
    }
}

'프로그래머스 문제풀어보기' 카테고리의 다른 글

[Lv.0] 문자열 정렬하기(2)  (0) 2023.03.02
[Lv.0] 369게임  (0) 2023.03.02
[Lv.0] 피자 나눠 먹기(2)  (0) 2023.02.28
[Lv.0] 가장 큰 수 찾기  (0) 2023.02.27
[Lv.0] 가장 큰 수 찾기  (0) 2023.02.26

댓글