-
반응형
https://programmers.co.kr/learn/courses/30/lessons/12977
코딩테스트 연습 - 소수 만들기
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때
programmers.co.kr
-풀이-
먼저 dfs를 이용하여 3종류의 숫자의 합을 만든다. 그런 뒤, 만들어진 합의 소수판별여부를 확인하여 answer를 갱신한다.
-코드-
#include <vector> #include<cmath> #include <iostream> using namespace std; int answer=0; bool check(int n){ for(int i=2;i<=sqrt(n);i++){ if(n%i==0){ return false; } } return true; } void dfs(int now,int sum,int cnt,vector<int>& nums){ if(cnt==3){ if(check(sum)) answer++; return; } for(int i=now+1;i<nums.size();i++){ dfs(i,sum+nums[i],cnt+1,nums); } } int solution(vector<int> nums) { dfs(-1,0,0,nums); return answer; }
반응형'문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 이름이 있는 동물의 아이디 (0) 2021.06.13 [프로그래머스] 최대공약수와 최소공배수 (0) 2021.06.12 [프로그래머스] [1차]다트 게임 (0) 2021.06.04 [프로그래머스] 실패율 (0) 2021.06.01 [프로그래머스] 예산 (0) 2021.05.31 댓글