Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions Programmers/Level1/12921_소수_찾기.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*
⭐️ 문제 정보 ⭐️
문제 : 12921 - 소수 찾기
레벨 : Level 1
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12921
*/

// ANCHOR - 2026.01.23 풀이
/**
* NOTE
* 에라토스테네스의 체
*/
function countPrime(n) {
const isPrime = Array.from({length: n + 1}).fill(true);
isPrime[0] = false;
isPrime[1] = false;

for (let num = 2; num * num <= n; num++) {
if (isPrime[num] === false) continue;
for (let k = num * num; k <= n; k += num) {
isPrime[k] = false;
}
}

return isPrime.filter((value) => value).length;
}

function solution(n) {
return countPrime(n);
}
41 changes: 41 additions & 0 deletions Programmers/Level1/12977_소수_만들기.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
⭐️ 문제 정보 ⭐️
문제 : 12977 - 소수 만들기
레벨 : Level 1
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12977
*/

// ANCHOR - 2026.01.23 풀이
/**
* NOTE
* 조합으로 3개씩 뽑아서 소수인지 확인
* (combinations 함수를 구현하는 것 보다 삼중 for문을 돌리는 것이 더 효율적이다. (공간복잡도 측면에서))
*/
function eratosthenes(n) {
const isPrime = Array.from({ length: n + 1 }).fill(true);
isPrime[0] = false;
isPrime[1] = false;
for (let num = 2; num * num <= n; num++) {
if (isPrime[num] === false) continue;
for (let k = num * num; k <= n; k += num) {
isPrime[k] = false;
}
}

return isPrime;
}

function solution(nums) {
let answer = 0;
const isPrime = eratosthenes(2997); // 주어진 숫자 3개를 더했을 때 나올 수 있는 최댓값이 2997 (1000+999+998)

for (let a = 0; a < nums.length - 2; a++) {
for (let b = a + 1; b < nums.length - 1; b++) {
for (let c = b + 1; c < nums.length; c++) {
if (isPrime[nums[a] + nums[b] + nums[c]]) answer++;
}
}
}

return answer;
}
4 changes: 3 additions & 1 deletion Programmers/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,16 @@
| 12906 | 같은 숫자는 싫어 | [12906_같은_숫자는_싫어.js](Level1/12906_같은_숫자는_싫어.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/12906) |
| 12909 | 올바른 괄호 | [12909_올바른_괄호.js](Level2/12909_올바른_괄호.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/12909) |
| 12910 | 나누어 떨어지는 숫자 배열 | [12910_나누어_떨어지는_숫자_배열.js](Level1/12910_나누어_떨어지는_숫자_배열.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/12910) |
| 12921 | 소수 찾기 | [12921_소수_찾기.js](Level1/12921_소수_찾기.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/12921) |
| 12924 | 숫자의 표현 | [12924_숫자의_표현.js](Level2/12924_숫자의_표현.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/12924) |
| 12928 | 약수의 합 | [12928_약수의_합.js](Level1/12928_약수의_합.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/12928) |
| 12939 | 최댓값과 최솟값 | [12939_최댓값과_최솟값.js](Level2/12939_최댓값과_최솟값.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/12939) |
| 12940 | 최대공약수와 최소공배수 | [12940_최대공약수와_최소공배수.js](Level1/12940_최대공약수와_최소공배수.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/12940) |
| 12941 | 최솟값 만들기 | [12941_최솟값_만들기.js](Level2/12941_최솟값_만들기.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/12941) |
| 12949 | 행렬의 곱셈 | [12949_행렬의_곱셈.js](Level2/12949_행렬의_곱셈.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/12949) |
| 12953 | N개의 최소공배수 | [12953_N개의_최소공배수.js](12953_N개의_최소공배수.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/12953) |
| 12953 | N개의 최소공배수 | [12953_N개의_최소공배수.js](Level1/12953_N개의_최소공배수.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/12953) |
| 12973 | 짝지어 제거하기 | [12973_짝지어_제거하기.js](Level2/12973_짝지어_제거하기.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/12973) |
| 12977 | 소수 만들기 | [12977_소수_만들기.js](Level1/12977_소수_만들기.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/12977) |
| 12981 | 영어 끝말잇기 | [12981_영어_끝말잇기.js](Level2/12981_영어_끝말잇기.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/12981) |
| 12985 | 예상 대진표 | [12985_예상_대진표.js](Level2/12985_예상_대진표.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/12985) |
| 12987 | 숫자 게임 | [12987_숫자_게임.js](Level3/12987_숫자_게임.js) | [🔗](https://school.programmers.co.kr/learn/courses/30/lessons/12987) |
Expand Down