이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

코딩테스트

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

이쿠우우 2022. 3. 15. 20:29
반응형

 

 

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

 

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

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

programmers.co.kr

 

 

글쓴이의 답

개인적인 풀이 임으로

이것보다 더 좋은 알고리즘은 많음...

이렇게도 풀이하는구나.. 공유하기 위해 올림...

 

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

// nums_len은 배열 nums의 길이입니다.
int solution(int nums[], size_t nums_len) {
    int answer = 0;
    int result=0;
    int save_number[3] = {0,};
    
    int i=0,j=0, k=0, t=1;
    for(i=0; i<nums_len-2; i++){
        for(j= i+1; j<nums_len-1; j++){
            for(k= j+1; k<nums_len; k++){
                save_number[0] = nums[i];
                save_number[1] = nums[j];
                save_number[2] = nums[k];
                result = save_number[0] + save_number[1] + save_number[2];
                while(true){
                    t++;
                    if(result == t){
                        answer++;
                        printf("[%d.%d,%d]를 이용해서 %d를 만들 수 있습니다.\n",save_number[0], save_number[1], save_number[2], result);
                        break;
                    }
                    else if(result % t ==0)
                        break;
                }
                t=1;
                    
                    
            }
        }
    }
        
    return answer;
}

꾸준히 하다보면 실력이 늘겠지..

반응형