[백준] 2839번 - 소인수분해 알고리즘 (java)

팥빵·2025년 9월 3일

Baekjoon

목록 보기
28/49

정수 N이 주어졌을 때 이를 3과 5라는 숫자로 분해할 수 있는 최소 개수를 구하는 문제이다.

N을 계속해서 줄여나가며 이를 5로 먼저 분해해보는 반복문을 짜면 된다. 이때 N은 5와 3 중 숫자가 적은 3씩 줄여나가야 한다.

"0을 어떤 정수와 나눈 나머지는 항상 0이다."

위 정보가 코드를 짜는 데 한 몫 한다.


import java.util.*;

class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int cnt = 0;
        
        while(N >= 0){		// N이 0 이하가 될 때까지 반복.음수면 반복문이 종료된다.
            if(N % 5 == 0){	// 먼저 N이 5로 깔끔하게 나눠지는지 체크
                cnt += N/5;
                System.out.println(cnt);
                return;		// 프로그램을 즉시 종료
            }
            N -= 3;			// 5로 나눠지지 않으면 N-3
            cnt++;			// 3이 한번 분해되었음을 의미
        }
        System.out.println("-1");	// 만약 끝까지 나눠지지 않으면 -1 출력
    }
}

맞았습니다!!

profile
반갑습니다

0개의 댓글