본문 바로가기
JAVA/Programmers

JAVA 프로그래머스 [소인수 분해] 자바 Lv.0

by tripleup 2023. 6. 2.
728x90
반응형

[프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 소인수 분해

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


해결 과정

 

이 문제는 먼저 배열의 크기를 짐작하기 힘들기 때문에 ArrayList를 사용하여 풀어준다.

 

Integer형 ArrayList 배열 answer을 선언해주고, 반복문을 돌아보자

 

for 문에서 i는 2부터 시작하고, while문을 돌면서 만약 n%i == 0일 때 배열에 i 값을 넣기 전에

 

우선 answer에  i가 있는지 없는지를 판단해야 하므로,

.contains() 를 이용하여 만약 들어있지 않다면 answer에 i 값을 넣어주는 형태로 진행한다.

 

그리고 그 n을 i로 나눈 값을 다시 n으로 만들어주고 다시 for문 전체를 반복해주면 된다.

 

소스 코드

 

import java.util.*;

class Solution {
    public ArrayList solution(int n) {
        ArrayList<Integer> answer = new ArrayList<>();
        
        for(int i = 2; i <= n; i++){
            while(n%i == 0){
                if(!answer.contains(i))
                    answer.add(i);
                n /= i;
            }
        }
        
        return answer;
    }
}

 


728x90
반응형

댓글