https://programmers.co.kr/learn/courses/30/lessons/12977?language=cpp 

 

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

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

programmers.co.kr

 

처음에는 next_permutation 써서 unordered_set<int> 에 is_prime을 만족하는 모든 조합을 넣었다가,,,

시간초과나서 모두 틀림.

 

알고보니 3중 for문으로 아주 쉽게 해결할 수 있던 거였음 ㅠㅠ

for문 if문 모두 브라켓 없어서 너무 깔-끔-

 

#include <bits/stdc++.h>

using namespace std;

bool is_prime(int n)
{
    if (n <= 1)
        return false;
    if (n == 2 || n == 3)
        return true;
    for (int i = 2; i <= sqrt(n); i++)
        if (n % i == 0)
            return false;
    return true;
}

int solution(vector<int> nums) {
    int answer = 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++)
                if (is_prime(nums[i] + nums[k] + nums[j]))
                    answer++;
    return answer;
}

'Algorithm' 카테고리의 다른 글

프로그래머스 - 카펫 c++  (0) 2021.05.23
프로그래머스 기능개발 c++  (0) 2021.05.23
boj 1992  (0) 2021.02.26
boj 1780  (0) 2021.02.25
boj 1003 피보나치 함수 c++  (0) 2021.02.19
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
// custom