[프로그래머스] 소수 만들기(C++)
by atomic0x90 (Yujun Han)
[프로그래머스] 소수 만들기 풀이 (Summer/Winter Coding(~2018))
https://programmers.co.kr/learn/courses/30/lessons/12977
이 문제는 주어진 숫자를 중복되지 않게 3개를 선택하는 알고리즘을 생각하면 된다.
그리고 나머지 연산을 통해서 소수를 판별하면 된다.
문제 풀이
- 숫자 3개를 더한 값을 저장하기 위한 벡터(check)를 선언한다.
- 숫자 3개를 중복되지 않게 선택한 뒤 값을 저장한다.
- 3중 for 문을 이용해 중복되지 않게 값을 저장한다.
- 저장한 값을 나머지 연산을 통해 소수인지 판별한다.
정답 코드
#include <vector>
#include <iostream>
using namespace std;
int solution(vector<int> nums) {
int answer = -1;
vector <int> check;
int nums_len = nums.size();
int flag;
int result = 0;
for(int i = 0;i < nums_len-2;i++){
for(int j = i+1;j < nums_len-1;j++){
for(int k = j+1;k < nums_len;k++){
check.push_back(nums[i]+nums[j]+nums[k]);
}
}
}
for(int i = 0;i < check.size();i++){
flag = 0;
for(int j = 2;j < check[i]/2;j++){
if(check[i]%j == 0){
flag = 1;
break;
}
}
if(flag == 0)
result++;
}
answer = result;
return answer;
}
감사합니다.
홈으로 가기 | 더 많은 programmers post 보기 | post 목록 보기 |
---|---|---|