[C#] 소수 만들기

2020. 8. 10. 19:28[C#] 코딩테스트 문제풀이

반응형

프로그래머스 문제 (Level 2)

문제 설명

주어진 숫자 중 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;
        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];
                    bool check = true;
                    
                    for(int t =2; t<num; t++)
                    {
                        if(num % t == 0)
                        {
                            check =false;
                            break;
                        }
                    }
                    if(check) answer++;
                }
            }
        }
        return answer;
    }
}

느낀점: 이 문제는 완전 탐색을 요구하는 문제이기 때문에 for문을 중첩하더라도 똑같은 케이스를 방문하지 않는 것에 집중하였다.

모든 경우의 수를 더하여주고, 더한 값이 소수인지를 판별하는 for문을 하나 더 둬서 마무리하는 방식으로 풀어보았다.

반응형

'[C#] 코딩테스트 문제풀이' 카테고리의 다른 글

[C#] JadenCase 문자열 만들기  (0) 2020.08.12
[C#]N개의 최소 공배수  (2) 2020.08.11
[C#] 점프와 순간이동  (0) 2020.08.10
[C#] 영어 끝말잇기  (0) 2020.08.05
[C#] 예상 대진표  (0) 2020.08.05