제로부터 C# 코딩테스트
프로그래머스 소수 만들기
휘게31
2023. 11. 29. 17:30
728x90
주어진 숫자 배열이 주어지고, 중복되지 않은 숫자 3개를 선택해 소수를 만들때 만들 수 있는 소수의 개수를 구하는 문제.
위 문제에서는 nums의 배열이 50이 최대기 때문에 간단하게 풀 수 있는 문제.
주어진 숫자 3개를 더했을 때 나올 수 있는 가짓수를 구한다면 포문 하나로도 풀 수 있을 것입니다.
보통 조합을 구하는 공식은 nCr로, 0부터 100까지 중복되지 않은 3개의 숫자를 선택하여 더할 때,
C(100, 3) = 100! / (3! * (100-3)!) = 100 * 99 * 98 / (3 * 2 * 1) = 161,700 가지가 나옵니다.
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 sum = 0;
sum += nums[i] + nums[j] + nums[k];
if(Prime(sum)){
answer++;
}
}
}
}
return answer;
}
public bool Prime(int num){
for(int i = 2; i<num;i++){
if(num%i == 0)
{
return false;
}
}
return true;
}
}
728x90