https://programmers.co.kr/learn/courses/30/lessons/12977?language=javascript
이전에 풀었던 거긴 한데, 다시 한번 풀어보았다. (소수 구하는 알고리즘도 다시 볼겸)
모든 프로그래머스 문제 관련 코드들은 GitHub 링크 에 있음.
function solution(nums) {
const sosuMap = [false, false, true];
// 1000 이하의 소수맵 만들기 (에라토스테네스의 체)
for (let i = 2; i < 3000; i++) {
if (sosuMap[i] === false) {
continue;
}
sosuMap[i] = true;
let temp = i + i;
while (temp < 3000) {
sosuMap[temp] = false;
temp += i;
}
}
// 3개 숫자 조합하면서 소수인지 판별 & count
let count = 0;
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j++) {
for (let x = j + 1; x < nums.length; x++) {
if (sosuMap[nums[i] + nums[j] + nums[x]]) {
++count;
}
}
}
}
return count;
}