프로그래머스 - 소수 만들기 (C#)

Leedong·2022년 7월 3일
0

programmers

목록 보기
7/18

문제 설명

int형 배열의 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하는 문제입니다.

문제 풀이 전

먼저, 소수를 판별하는 방법은 약수가 2개인지 확인하는 기본적인 방법이 있습니다.

좀 더 빠른 방법은 제곱근을 이용하는 방법이 있습니다.

public bool IsPrime(int num) 
{
	int sqrt = (int) Math.Sqrt(num); 
    for (int i = 2; i <= sqrt; i++) 
    {
    	if (num % i == 0)
    	{
    		return false;
    	}
    }
    return true;
}

공식을 외울 필요 없이 필요할 때 복붙해서 쓰면 됩니다.

문제 풀이

소수가 되는 경우의 개수를 구하려면 결국 3개의 수를 더한 값을 모두 구해야 합니다.

3중 반복문을
i는 0부터 nums.Length - 2까지
j는 i + 1부터 nums.Length - 1까지
k는 j + 1부터 nums.Length까지

돌리면 중복으로 계산하는 것 없이 모든 경우의 수를 찾을 수 있습니다.

제출 코드

using System;

class Solution
{
    public int solution(int[] nums)
    {
        int answer = 0;
        
        for (int i = 0; i < nums.Length - 2; i++)
        {
            for (int j = i + 1; j < nums.Length - 1; j++)
            {
                for (int k = j + 1; k < nums.Length; k++)
                {
                    int num = nums[i] + nums[j] + nums[k];
                    if (IsPrime(num))
                    {
                        answer++;
                    }
                }
            }
        }

        return answer;
    }
    
    public bool IsPrime(int num) 
	{
		int sqrt = (int) Math.Sqrt(num); 
		for (int i = 2; i <= sqrt; i++) 
		{
			if (num % i == 0)
            {
                return false;                 
            }				
		} 
		return true; 
	}
}
profile
Unity, C#

0개의 댓글