C#/프로그래머스 코딩 문제 풀이

[프로그래머스 C#] Lv.1 소수 찾기

ForMan_ 2024. 1. 19. 19:12

1. 문제설명

1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.(1은 소수가 아닙니다.)

2. 제한사항

● n은 2이상 1000000이하의 자연수입니다.

3. 입출력 예시

n result
10 4
5 3

4. 나의 풀이

public int solution(int n)
    {
        int answer = 0;
        int[] arr = new int[n + 1];

        //arr배열 2번방부터 2부터 순서대로 숫자를 넣어준다.
        for (int i = 2; i <= n; i++)
        {
            arr[i] = i;
        }

        //소수의 배수에 해당하는 방을 0으로 바꿔주는 for문.
        for (int i = 2; i <= n; i++)
        {
            if (arr[i] == 0)
                continue;

            for (int k = i * 2; k <= n; k += i)
            {
                arr[k] = 0;
            }
        }

        //arr배열에서 0이 아닌 수를 카운트하는 for문.
        for (int i = 2; i <= n; i++)
        {
            if (arr[i] != 0)
                answer++;
        }

        return answer;
    }