티스토리 뷰
https://programmers.co.kr/learn/courses/30/lessons/12977
코딩테스트 연습 - 소수 만들기
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때
programmers.co.kr
#include <vector>
#include <math.h>
using namespace std;
bool checkPrimeNumber(int pnum){
int sqrt_pnum = (int) sqrt(pnum);
for(int i = 2; i <= sqrt_pnum; i++) if(pnum % i == 0) return false;
return true;
}
int solution(vector<int> nums) {
int answer = 0;
int pnum;
for(int i = 0; i < nums.size() -2; i++){
for(int j = i + 1; j < nums.size() - 1; j++){
for(int k = j + 1; k < nums.size(); k++){
pnum = nums[i] + nums[j] + nums[k];
if(checkPrimeNumber(pnum)) answer++;
}
}
}
return answer;
}
벡터의 길이가 최대 50이기 때문에 중첩 for문에서 자유로울 수 있었다.
모든 경우의 수를 구하고 각 경우의 수 마다 소수인지 판별해 카운트한다.
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 숫자 문자열과 영단어 : C++ (0) | 2021.08.11 |
---|---|
[프로그래머스] K번째 수 : C++ (0) | 2021.08.11 |
[프로그래머스] 완주하지 못한 선수 : C++ (0) | 2021.08.11 |
[프로그래머스] 폰켓몬 : C++ (0) | 2021.08.11 |
[프로그래머스] 예산 : C++ (0) | 2021.08.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- C++
- Thymeleaf
- 프로그래머스
- JSP
- 인턴
- 국비교육
- CS
- Java
- 백준
- 데이터베이스
- CSS
- Open API
- 이클립스
- svn
- 부트스트랩
- 네트워크
- SQL
- HeidiSQL
- 스프링부트
- 오류
- C
- 넥사크로
- 개발용어
- JVM
- 스프링
- 오라클
- 환경설정
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함