더 많이 실패하기

백준 11653번 소인수분해 / 백준 단계별로 풀어보기 8단계 / 8. 기본 수학 2 본문

알고리즘/백준

백준 11653번 소인수분해 / 백준 단계별로 풀어보기 8단계 / 8. 기본 수학 2

김발자~ 2022. 9. 17. 20:07
반응형

백준 8단계 3번 문제 - 11653 소인수분해

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

 

11653번: 소인수분해

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

www.acmicpc.net

 

 

 


8. 기본 수학 2 (3) 백준 11653번 문제 소인수분해


문제


 

 

 

 


과정 생각해보기


 

2부터 시작해서 나머지가 0이 아닐 때까지 반복문을 짠다

나눠질 때마다 몫이, 즉 소수가 출력되도록 반복문 안에 println을 넣어준다

 

 

 


정답 인정 코드


 

위에서 생각한 과정으로 도출한 코드는 다음과 같다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
 
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 (true) {
                if(n % i == 0) {
                    n /= i;
                    System.out.println(i);
                }else break;
            }
        }
    }
}
cs

 

처음엔 for문 하나만 썼는데, 그러면 작동이 안 돼서 while문까지 추가했다

 

 

 


직후 백지 복습


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        int n = Integer.parseInt(br.readLine());
        
        for(int i = 2; i <= n; i++) {
            while(true) {
                if(n % i == 0) {
                    n /= i;
                    System.out.println(i);
                }
                else break;
            }
        }
    }
 
}
cs

 

BufferedReader로 풀었다

식은 똑같다

 

 

 


 

반응형
Comments