C++)
#include <vector>
#include <iostream>
#include <array>
#define MAX_NUM 3000 // 입력된 값들의 최대 합은 998+999+1000
using namespace std;
array<bool, MAX_NUM> prime;
int solution(vector<int> nums) {
int answer = 0;
// 소수 먼저 구하기
for(int i = 2; i * i <= MAX_NUM; i++) {
if(!prime[i]) {
for(int j = i * i; j <= MAX_NUM; j+=i) {
prime[j] = true;
}
}
}
// 3개의 수의 합 구하기
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++) {
if(!prime[nums.at(i) + nums.at(j) + nums.at(k)])
answer++;
}
}
}
return answer;
}
Python)
def solution(nums):
arr = [False] * 3000
for i in range(2, int(3000**0.5)):
for j in range(i*i, 3000, i):
if arr[j]:
continue
arr[j] = True
ans = 0
for i in range(len(nums)):
for j in range(i+1, len(nums)):
for k in range(j+1, len(nums)):
if not arr[nums[i]+nums[j]+nums[k]]:
ans += 1
return ans'프로그래머스 > Level1' 카테고리의 다른 글
| [Level1] 실패율 (C++) (0) | 2023.02.10 |
|---|---|
| [Level1] 가장 가까운 같은 글자 (C++/Python) (0) | 2023.02.09 |
| [Level 1] 모의고사 (C++/Python) (0) | 2023.02.07 |
| [Level1] 콜라 문제 (C++/Python) (0) | 2023.02.07 |
| [Level1] 푸드 파이트 대회 (C++/Python) (0) | 2023.02.07 |