프로그래머스_C#/Level_1

[프로그래머스 C#] 소수 만들기

최애뎡 2021. 9. 8. 00:10
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/12977

 

코딩테스트 연습 - 소수 만들기

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때

programmers.co.kr

using System;
using System.Collections.Generic;

class Solution
{
    public int solution(int[] nums)
    {
        int answer = 0;
        
        Array.Sort(nums);
        int max = nums[nums.Length - 1] + nums[nums.Length - 2] + nums[nums.Length - 3];

        List<bool> list_num = new List<bool>(){ false, false };
        for (int i = 1; ++i <= max;) list_num.Add(true);
        for (int i = 1; ++i <= max;)
            if(list_num[i] == true)
            {
                for (int j = i * 2; j <= max; j += i) 
                    list_num[j] = false;                    
            }

        for(int i = -1; ++i < nums.Length - 2;)
            for(int j = i + 1; j < nums.Length - 1; j++)
                for(int x = j + 1; x < nums.Length; x++)
                {
                    int sum = nums[i] + nums[j] + nums[x];
                    if(list_num[sum]) answer++;
                }
                                        
        return answer;
    }
}

음 max값 구하고

에라토스테네스의 체 사용 후 배열 쭉 돌려서 계산

반응형