배운 점:
소수인지 여부를 판단하는 방법 중 효과적인 방법을 배웠다.
바로 제곱근을 이용하는 방법.
모든 약수들은 대칭을 이루는 성질을 이용하여 제곱근까지만 약수의 여부를 검증하면
그보다 큰 약수의 수는 검사할 필요가 없어지는 점을 이용한 방법이다.
실수한 점:
using System;
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
// 총 정수 개수 n
int n = int.Parse(Console.ReadLine());
// 모든 숫자 입력받고
int[] inputs = Array.ConvertAll(Console.ReadLine().Trim().Split(' '), int.Parse);
int answer = 0;
// 입력받은 숫자 하나씩 확인 후 소수면 answer에 카운트 ++;
foreach (int i in inputs)
{
if(CalcPrime(i)) answer++;
}
Console.WriteLine(answer);
}
// 소수인지 확인 후 소수면 true를 반환하는 메소드
static bool CalcPrime(int num)
{
if (num == 0 || num == 1) return false;
// 제곱근으로 확인하는 방식. 2~num-1 까지의 모든 숫자로 나눠보는 방식보다 빠르다.
int nr = (int)Math.Sqrt(num);
for (int i = 2; i <= nr; i++)
{
if (num % i == 0)
return false;
}
return true;
}
}
}
728x90
'알고리즘 문제 풀이 > 백준' 카테고리의 다른 글
[백준 2751번/C#] 수 정렬하기 2 (0) | 2023.10.24 |
---|---|
[백준 10989번/C#] 수 정렬하기 (0) | 2023.10.24 |
[백준 10809번/C#] 알파벳 찾기 (0) | 2023.10.23 |
[백준 8958번/C#] OX퀴즈 (0) | 2023.10.23 |
[백준 2577번/C#] 숫자의 개수 (0) | 2023.10.23 |