본문 바로가기
문제 풀이/백준(BOJ)

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

by 희조당 2021. 3. 15.
728x90

www.acmicpc.net/problem/11653

 

11653번: 소인수분해

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

www.acmicpc.net


문제 접근법

단계별로 분류해서 접근했다. 

 1. 나누는 숫자가 소수인지 판단

 2. 소수가 맞다면 주어진 N을 나눴을 때 나머지가 없다면 N = N / div하고 출력 아니라면 div++

 3. 나누다가 N이 1이라면 종료

느낀점

생각한 접근법으로 시도했는데 맞게 나오지만 시간 초과... 전에 소수문제가 나와서 소수인지를 꼭 판단해야할 줄 알았는데 그게 아니었다. 이후 코드를 최소화 하고 재도전했는데 성공! 아직 코드가 깔끔하지 않은 것 같다.

코드

#include <stdio.h>

int main() {
	int n, i = 2;
	scanf("%d", &n);
	while (1) {
		if (n % i == 0) {
			printf("%d\n", i);
			n /= i;
		}
		else i++;
		if (n == 1) break;
	}
	return 0;
}

댓글