본문 바로가기
코딩테스트

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

by 코모's 2021. 7. 13.
반응형

문제 설명

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

제한사항

  • nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
  • nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.

 

using System; 

class Solution 
{ 
    public int solution(int[] nums) 
    { 
        int answer = 0; 
         
        int sum = 0;                

        for(int i=0; i < nums.Length; i++) 
        { 
            for(int j= i+1; j < nums.Length; j++) 
            { 
                for(int q = j+1; q < nums.Length; q++) 
                { 
                    sum = nums[i] + nums[j] + nums[q]; 

                    for(int k=2; k < sum; k++) 
                        if(sum % k == 0) 
                            break; 
                        else 
                        { 
                            if(k == sum -1) 
                                answer++; 
                        } 
                } 
            } 
        }         
        return answer; 
    } 
     
}

 

순차적으로 q,j,i가 증가하는 방법을 사용하였다.

예시 사진

위 사진과 같이 q가 다 돌면 j를 돌리고 그다음 i를 상승 시키는 방법으로 3중 for문 을 사용하였다.

 

소수 검사는 2이상 자기 자신 이하의 숫자로 나누었을때 나머지가 0인 경우(약수가 존재)가 없으면 소수로 처리하였다.

반응형