티스토리 뷰

 

문제 설명

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

 

 

제한 사항

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

 

입출력 예시

nums result
[1,2,3,4] 1
[1,2,7,6,4] 4

 

 

 

주어진 코드

소수구하기_초기화면

 

완성 코드1

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// nums_len은 배열 nums의 길이입니다.
int solution(int nums[], size_t nums_len) {
    int answer = -1;
    //int arrSize = (nums_len * (nums_len - 1) * (nums_len - 2)) / ((nums_len - 1) * (nums_len - 2));
    //int* addNum = (int*)malloc(sizeof(int) * nums_len);
    int addNum = 0;
    int count = 0;
    int index = 0;
    int ifNum=0;

    for (int i = 0; i < nums_len; i++) {
        for (int j = i + 1; j < nums_len; j++) {
            for (int z = j + 1; z < nums_len; z++, index++) {
                addNum = nums[i] + nums[j] + nums[z];
                printf("%d  ", addNum);
                for (int index = 2; index < addNum; index++) {
                    if (addNum % index == 0) {
                        ifNum=0;
                        break;
                    }
                    else ifNum=1;
                }
                if (count == 1) count++;
                
            }
        }
    }
   

    answer = count;
    return answer;
}

코드1 분석

 

 

 

 

완성 코드2

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// nums_len은 배열 nums의 길이입니다.
int solution(int nums[], size_t nums_len) {
    int answer = -1;
    //int arrSize = (nums_len * (nums_len - 1) * (nums_len - 2)) / ((nums_len - 1) * (nums_len - 2));
    //int* addNum = (int*)malloc(sizeof(int) * nums_len);
    int addNum = 0;
    int count = 0;
    int index = 0;
    int ifNum=0;

    for (int i = 0; i < nums_len; i++) {
        for (int j = i + 1; j < nums_len; j++) {
            for (int z = j + 1; z < nums_len; z++, index++) {
                addNum = nums[i] + nums[j] + nums[z];
                printf("%d  ", addNum);
                for (int index = 2; index < addNum; index++) {
                    if (addNum % index == 0) {
                        ifNum=0;
                        break;
                    }
                    else ifNum=1;
                }
                if (count == 1) count++;
                
            }
        }
    }
   

    answer = count;
    return answer;
}

코드2 분석

댓글