2학기 1주차_알고리즘( 백준1978번 : 소수 찾기 )
2023. 9. 17. 14:32ㆍAlgorithm ( p & swlug )/Baekjoon
[ 문제 ]
▶문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
▶입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
▶출력
주어진 수들 중 소수의 개수를 출력한다.
[ 작성한 코드 ]
#include <stdio.h>
int main(void)
{
int n;
int num = 0;
int count = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &num);
for (int k = 2; k <= num; k++)// 1을 제외시키고
{
if (num == k)//자기자신과 같은 수
count++;// count하기
if (num % k == 0)// 1과 자기자신외에 약수가 있다면
break; // break
}
}
printf("%d", count);
return 0;
}
[ 내 풀이 ]
1. 일단 변수들을 선언하고 초기화해준다.
2. scanf를 통해서 입력 받을 건데 입력 조건에 맞게 첫 줄에 수의 개수 n이 주어지고, 다음으로 n개의 수를 num으로 입력 받는다.
3. for과 if문을 통해서 1을 제외한 (소수는 1과 자기자신을 제외한 약수가 없어야한다.) 2부터 num보다 작거나 같은 수중에서 자기자신과 같은 수를 count를 통해서 셀 수있도록 한다.
4. 그리고 위 조건을 제외한 약수가 있다면 break를 통해 반복문을 탈출하도록한다.
5. printf를 통해서 약수의 개수를 출력한다.
[ 느낀점 ]
소수를 판별하는 코드는 c수업 시간에 다뤄봤던 내용이었다.
하지만 이 문제는 소수를 찾기 + 좀더 디테일한 조건들이 주어져서 그 부분에서 시간을 쏟고 고민을 해야했다.
이 문제를 풀면서, 바로 문제 풀기를 시작하기보단 문제를 조금 더 이해하고 원하는 바를 고민한다음에 문제 풀이를 한다면 효율적이겠다라는 생각이 들었다.
아직은 공부가 많이 필요할 것 같다. (●'◡'●)
'Algorithm ( p & swlug ) > Baekjoon' 카테고리의 다른 글
2학기 2주차_알고리즘( 백준2164번 : 카드2 ) (0) | 2023.09.24 |
---|---|
2학기 1주차_알고리즘( 백준10773번 : 제로 ) (0) | 2023.09.17 |
백준 2439번(별 찍기 -2) (0) | 2023.08.05 |
8주차_알고리즘 (백준 11557번) (0) | 2023.05.31 |
8주차_알고리즘 (백준 10817번) (0) | 2023.05.25 |