일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- C++
- 없는 숫자 더하기
- 1620
- js
- 소수 체크
- 5525
- 4796
- 다이내믹 프로그래밍
- 정수 삼각형
- 18111
- 프로그래머스
- 10162
- codeSyntaxHighlight
- 구간 합 구하기 4
- 위클리 챌린지
- Git Convention
- n^2 배열 자르기
- javascript
- react
- 브루트포스 알고리즘
- BOJ
- 이분탐색
- 옵셔널 체이닝 연산자
- 주식 가격
- 2018 KAKAO BLIND RECRUITMENT
- Hasing
- colorSyntax
- 깊이 우선 탐색
- mermaid js
- 숫자 문자열과 영단어
Archives
- Today
- Total
개발하는 kim-hasa
[c++][프로그래머스] 소수 만들기 본문
https://programmers.co.kr/learn/courses/30/lessons/12977
코딩테스트 연습 - 소수 만들기
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때
programmers.co.kr
주어진 숫자 중 3개를 더해서 소수인지 아닌지를 판별하는 프로그램입니다.
3개 더하는 것을 3중 for문으로 해결했습니다.
그 이후에 소수를 판별해서 정답을 출력합니다.
#include <vector>
#include <iostream>
using namespace std;
int solution(vector<int> nums) {
int answer = 0;
int len = nums.size(); // 들어온 숫자의 갯수
vector<int> sum; // 합을 더해서 넣은 배열
int sum3 = 0; // 세 숫자를 더할 변수
for(int i=0; i<len; i++)
{
for(int j=i+1; j<len; j++)
{
for(int k=j+1; k<len; k++)
{
sum3 = nums[i] + nums[j] + nums[k];
sum.push_back(sum3);
int sum3 = 0; // 세 수를 더해서 벡터에 넣습니다.
}
}
}
for(int i=0; i<sum.size(); i++)
{
int sosu = sum[i];
int sosucount = 0;
for(int j = 2; j <= sosu/2; j++) // 한 수씩 돌아가면서 소수 검사를 합니다.
{
if(sosu%j == 0) // 소수가 아니라면 카운트를 1로 바꾸고 break
{
sosucount = 1;
break;
}
}
if(sosucount == 0) // 소수라면 정답의 갯수를 늘립니다.
{
answer++;
}
}
return answer;
}
※ 코드가 지저분할 수 있습니다.
'Algorithm > Programmers(c++)' 카테고리의 다른 글
[c++][프로그래머스] 3진법 뒤집기 (0) | 2021.07.29 |
---|---|
[c++][프로그래머스] 약수의 개수와 덧셈 (0) | 2021.07.28 |
[c++][프로그래머스] [카카오 인턴]키패드 누르기 (0) | 2021.07.28 |
[c++][프로그래머스] 음양 더하기 (0) | 2021.07.28 |
[c++][프로그래머스] 신규 아이디 추천 (0) | 2021.07.28 |