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

Boknami·2022년 1월 21일
0

백준문제풀이

목록 보기
7/45

📑문제

정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.


👀 핵심 포인트

1. 나누어지는 수들을 어떻게 찾을 것인가?

-> 처음에 접근을 어떻게 시작해야할지 아이디어가 떠오르지 않아서 나 자신이 직접 소인수분해를 할 때 어떻게 하는지 생각을 해보았다!

내가 직접 소인수분해를 할 때는 2,3,5 같은 숫자들 중에 될 것 같은 것들을 골라 나눗셈을 시도하였다. 그래서 c언어로 이것을 비슷하게 어떻게 풀까 생각을 하니 간단하게 반복문을 통해서 2부터 (1은 어짜피 다 나누어지니까)시작해 N까지 반복을 하게 만들었다. 반복은 N만큼 하게 하였지만 과정 속에서 변수 N의 값이 줄어들게 만들었고 만약에 나누어진다면 다시 i를 2부터 시작할 수 있도록 하였다!

for (int i = 2; i <= N; i++)
	{
		if (N % i == 0)
		{
			printf("%d\n", i);
			N = N / i;
			i = 1;
		}
	}

🤦‍♀️틀린 이유🤦‍♂️

틀리지않고 1번에 통과!


😮 느낀 점

처음에 코드를 어떻게 짜야할지 몰라서 막연하긴 했는데 내가 직접 하는 수학적 과정을 C언어(컴퓨터 언어)로 어떻게 풀어내야하는지 고민을 하다보니 조금 감이왔다! 언어 공부를 열심히 해서 내가 생각하는 흐름?을 컴퓨터 언어로 잘 풀어낼 수 있어야겠다는 것을 느꼈다!


🧾 전체 코드

#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>

int main()
{
	int N;

	scanf("%d", &N);

	for (int i = 2; i <= N; i++)
	{
		if (N % i == 0)
		{
			printf("%d\n", i);
			N = N / i;
			i = 1;
		}
	}
}

0개의 댓글