[c++/알고리즘] 프로그래머스 소수만들기

1811 단어 알고리즘CC

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

#include <vector>
#include <iostream>
using namespace std;

int isPrime(int p){
//소수인지 판별
    int flag = 1;
    
    if(p==1) flag = 0;
    else {
        for(int i=2; i*i<=p; i++){ 
            if(p%i == 0) {flag=0; break;}
         }
    }
    
    return flag;
}

int solution(vector<int> nums) {
    int answer = 0;
    int sosu = 0;

    for(int i=0; i< nums.size(); i++){
    	for(int j=i+1; j<nums.size(); j++){
            for(int k=j+1; k< nums.size(); k++){
                sosu = nums[i] + nums[j] + nums[k];
                
                answer += isPrime(sosu);
            }
        }
    }
    return answer;
}

  • 알고리즘을 풀때의 나의 문제점 : 단순한 부분은 단순하게 접근해서 시도해보면 좋은데 항상 어렵게 생각하려고 한다...

  • 소수인지 판별하는 부분

if(p==1) flag = 0;
else {
        for(int i=2; i*i<=p; i++){ 
            if(p%i == 0) {flag=0; break;}
         }
     }
  1. 자연수 1은 소수가 아니다.
  2. 그렇기 때문에 소수를 판별할때 2부터 확인하는데,

좋은 웹페이지 즐겨찾기