Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[백준] - 소인수분해 (11653) (자바/Java) 본문

알고리즘문제/백준 문제(Java)

[백준] - 소인수분해 (11653) (자바/Java)

luke-king 2024. 4. 25. 19:37

 

 

 

 

 

https://www.acmicpc.net/problem/11653

 

11653번: 소인수분해

첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.

www.acmicpc.net

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

풀이.


 

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        for (int i = 2; i <= n; i++) {
            while (n % i == 0) {
                System.out.println(i);
                n /= i;
            }
        }

    }


}

 

이번 문제는 소인수분해 문제다.

처음에 어떻게 접근해야 하는지 감이 잘 잡히지 않았다.. 하지만 조금만 생각해 보니 크게 어렵지 않았던 거 같다!

바로 풀이 해보겠다.

 

1. for문 i는 1이 아닌 2로 나눠 나머지가 0이어야 출력한다. (1의 경우 소수가 아니기 때문에 제외.)

 

2. while문을 이용해 나머지가 0에 충족할 경우 i 값을 출력한다.

 

3. n /= i를 해야 72로 나눴을 경우 36으로 다시 반복하며 2로 나눴을 때 나누어 떨어지므로 2가 또 출력되며 18로 값이 바뀌며 또다시 2로 나눠 나머지가 0 이나오므로 2가 출력한다. 다음으로 n 값이 9로 바뀌는데 2로 나눴을 때에 나머지가 0이 아니므로 i는 3 while문 조건 충족이므로 3 값이 출력이 된다 다음 n은 3 다시 나누어 3의 값이 나오며 마무리된다.