2학기 1주차_알고리즘( 백준1978번 : 소수 찾기 )

2023. 9. 17. 14:32Algorithm ( 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수업 시간에 다뤄봤던 내용이었다.

하지만 이 문제는 소수를 찾기 + 좀더 디테일한 조건들이 주어져서 그 부분에서 시간을 쏟고 고민을 해야했다.

이 문제를 풀면서, 바로 문제 풀기를 시작하기보단 문제를 조금 더 이해하고 원하는 바를 고민한다음에 문제 풀이를 한다면 효율적이겠다라는 생각이 들었다.

아직은 공부가 많이 필요할 것 같다.  (●'◡'●)