[Java] 백준 11653번: 소인수분해

U·2023년 3월 17일

백준

목록 보기
28/116

💻 문제


일단 이해하자🤔

  • 소인수분해는 1이 아닌 약수로 수를 끝까지 나누는 것이므로 for문 보다는 while문을 쓰는 것이 적합하다고 생각했다. 나눌 수인 int형 변수 i를 2로 선언한 뒤, iN이 될때까지만 while문을 돌리며 만약 Ni로 나누어 떨어지면 즉시 출력하고 Ni로 나누고 i는 다시 2로 초기화시켰다.

👀 풀이

import java.io.*;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(System.out));

        int N = Integer.parseInt(bfr.readLine());
        int i = 2;

        if (N != 1) {
            while (i <= N) {
                if (N % i == 0) {
                    bfw.write(i + "\n");
                    N /= i;
                    i = 2;
                }
                else {
                    i++;
                }
            }

        }

        bfr.close();
        bfw.flush();
        bfw.close();
    }
}
profile
백엔드 개발자 연습생

0개의 댓글