프로그래밍 언어/C

백준 C언어 1978 소수 찾기 풀이

happy_life 2021. 10. 2. 11:30

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

 

1978번: 소수 찾기

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

www.acmicpc.net

문제

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

 

 

풀이

 

(소수: 수학에서 1과 그 자신 이외의 자연수로는 나눌 수 없는 1보다 큰 자연수)

 

풀이1) 

#include <stdio.h>

int main()
{
	int n;
	int num, cnt = 0;

	scanf("%d", &n);

	for (int i = 0; i < n; i++)
	{
		scanf("%d", &num);

		for (int j = 2; j <= num; j++)
		{	
			if (num == j)
			{
				cnt++;
			}
			if (num % j == 0)
			{
				break;
			}
		}
	}
	printf("%d", cnt);
	return 0;
}

단순 무식하게 첫번째부터~ 그 수까지 체크하는 방법으로 계산

 

 

 

 

배운점

1)for 문이 돌 때마다, scanf를 하는 아이디어를 사용하는 방법이 존재한다

 

2)int 배열 [ 1001]을 생각했는데 1001이면 범위가 너무 넓다.

-> 최대한 적게 할 수 있는 idea를 생각해야한다.

1)을 생각하지 못했기 때문임

 

3)설계에 80%의 시간을 들이자

->쓸데 없는 코드 작성하다가 시간 다 날린다.

(굳이 제곱근 어쩌구 해서 구하지 말고 그냥 처음부터 단순하게세는 프로그램을 작성하는 것도 방법이었음)

 

4)단순한 코드부터 적용하자

굳이 어렵게 풀 필요 없다.