반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 프로그래머스
- HTTP 완벽 가이드
- 자바스크립트
- Algorithm
- TCP
- 가천대
- 타입 챌린지
- 알고리즘
- type challenge
- 소켓
- 쉬운 문제
- dfs
- HTTP
- javascript
- typescript
- 타입스크립트
- 프로그래머스 레벨 2
- 그래프
- 백준
- socket
- BFS
- 문자열
- Nestjs
- 레벨 1
- 수학
- Node.js
- Crawling
- dp
- ip
- 크롤링
Archives
- Today
- Total
kakasoo
[node.js] 소수 찾기 ( 백준 1978번 ) 본문
반응형
// 백준 1978번 소수찾기를 풀었습니다.
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let count = 0;
rl.on("line", (line) => {
if (!count) {
count = Number(line);
} else {
main(line);
rl.close();
}
}).on("close", () => process.exit());
/**
*
* @param {string} line
*/
const main = (line) => {
const numbers = line.split(" ").map(Number);
let count = 0;
loop1: for (let i = 0; i < numbers.length; i++) {
const curNumber = numbers[i];
if (curNumber < 2) {
continue;
}
loop2: for (let j = 2; j * j <= curNumber; j++) {
if (curNumber % j === 0) {
continue loop1;
}
}
count++;
}
console.log(count);
};
// 백준 1978번 소수찾기를 풀었습니다.
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let count = 0;
rl.on("line", (line) => {
if (!count) {
count = Number(line);
} else {
main(line);
rl.close();
}
}).on("close", () => process.exit());
/**
*
* @param {number} num
*/
const isPrime = (num) => {
if (num < 2) {
return false;
}
for (let i = 2; i * i <= num; i++) {
if (num % i === 0) {
return false;
}
}
return true;
};
/**
*
* @param {string} line
*/
const main = (line) => {
const numbers = line.split(" ").map(Number);
let count = 0;
for (let i = 0; i < numbers.length; i++) {
const curNumber = numbers[i];
if (curNumber < 2) {
continue;
}
if (isPrime(curNumber)) {
count++;
}
}
console.log(count);
};
두 개 방식을 제공한다. 첫번째 방식은 레이블을 이용한 방식이다. 다만 레이블을 이용하면 함수의 동작 방식을 이해하기 어려울 수 있다.
사실 직관적이라곤 생각하는데, 생소하다보니 어색하다.
break loop1이라고 한다면 loop1의 for문을 break 하겠단 뜻이고, continue loop1이라고 하면 loop1을 continue 하겠단 뜻이다.
사실 되게 직관적이긴 한데, 막상 다루려고 하면 헷갈릴 수 있다.
따라서 함수를 분할하는 게 싸게 먹힌다.
반응형
'프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
[node.js] 소인수분해 ( 백준 11653번 ) (0) | 2021.04.07 |
---|---|
[node.js] 골드바흐의 추측 ( 백준 6588번 ) (0) | 2021.04.07 |
[node.js] 대소문자 바꾸기 ( 백준 2744번 ) (0) | 2021.04.07 |
[node.js] 홀수 ( 백준 2576번 ) (0) | 2021.04.06 |
[node.js] 최댓값 ( 백준 2566번 ) (0) | 2021.04.06 |