[백준] 11653번 : 소인수분해 (JAVA)

2026. 2. 26. 10:29·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

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


📌 문제 개요

자연수 N이 주어졌을 때, N을 소인수분해하여
소인수를 오름차순으로 한 줄에 하나씩 출력하는 문제


📌 접근 방법

  • 2부터 시작하여 N이 나누어지는지 검사
  • 나누어지면 출력 후 계속 나눔
  • 더 이상 나누어지지 않으면 다음 수로 증가
  • 반복은 i * i <= N까지만 수행
  • 반복 후 N > 1이면 마지막 소수 출력

📌 핵심 아이디어

왜 while을 사용하는가?

  • 소인수는 중복될 수 있다.

예시: 12 = 2 × 2 × 3

2가 두 번 등장하므로 한 번만 나누면 안 된다.


📌 왜 i * i <= N까지만 검사하는가?

어떤 수 N이 두 수의 곱이라면
그 중 하나는 반드시 √N 이하이기 때문이다.

따라서 √N까지만 검사해도 모든 소인수를 찾을 수 있다.


📌 전체 코드

package no_11653;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class No11653 {
    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 * i <= n; i++){
            while (n % i == 0){
                System.out.println(i);
                n /= i;
            }
        }

        if (n > 1) {
            System.out.println(n);
        }
    }
}

📌정리

  • 소인수는 중복될 수 있으므로 while 사용
  • √N까지만 검사하면 시간복잡도 O(√N)
  • 마지막에 남은 값 처리 필수
728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

[백준] 1418번 : K-세준수 (JAVA)  (0) 2026.03.02
[백준] 10870번 : 피보나치 수 5 (JAVA)  (0) 2026.03.01
[백준] 1343번 : 폴리오미노 (JAVA)  (0) 2026.02.26
[백준] 14916번 : 거스름돈 (JAVA)  (0) 2026.02.23
[백준] 11004번 : K번째 수 (JAVA)  (0) 2026.02.22
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • [백준] 1418번 : K-세준수 (JAVA)
  • [백준] 10870번 : 피보나치 수 5 (JAVA)
  • [백준] 1343번 : 폴리오미노 (JAVA)
  • [백준] 14916번 : 거스름돈 (JAVA)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN
      • 코테(Solved.ac + Programmers)
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    수학
    완전탐색
    자료구조
    알고리즘
    level1
    java
    피보나치
    백준
    문자열
    level0
    실기
    백엔드개발자
    코딩테스트
    solved.ac
    정처기
    프로그래머스
    정보처리기사 실기 기출문제
    구현
    정처기실기
    배열
    자바
    브루트포스
    정보처리기사
    정렬
    기출문제
    dp
    시뮬레이션
    springboot
    정처기오답노트
    Level2
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
[백준] 11653번 : 소인수분해 (JAVA)
상단으로

티스토리툴바