📌 문제 링크
https://www.acmicpc.net/problem/1816
📌 문제 탐색하기
- 주어진 수의 소인수가 1,000,000보다 크다면 적절한 비밀번호이다. 적절한 비밀번호라면 "YES"를 아니라면 "NO"를 출력해라
시간복잡도
- O(n⋅k)
알고리즘 선택
- 완전탐색
📌 코드 설계하기
- 문제의 `input`을 개행으로 분리하여 BigInt로 변환하고 구조분해할당 합니다.
- `arr` 배열을 순회합니다.
- 소수인지 약수인지 확인하기 위한 `isPrime` 변수를 초기화합니다.
- 2부터 1,000,000까지 순회하면서 값이 나뉘는지 확인합니다.
- 나뉜다면 "NO"를 출력하고 `isPrime`을 `false`로 할당하고 `break` 합니다.
- `isPrime`이 `true`라면 "YES"를 출력합니다.
📌 시도 회차 수정 사항 (Optional)
1회차
- flag인 `isPrime`을 넣지 않아서 if문을 빠져나온 다음 바로 "YES"를 출력했다.
📌 정답 코드
//https://www.acmicpc.net/problem/1816
export {};
const fs = require("fs");
const filePath =
process.platform === "linux" ? "/dev/stdin" : __dirname + "/input.txt";
const [_, ...arr] = fs
.readFileSync(filePath)
.toString()
.trim()
.split("\n")
.map(BigInt);
for (const x of arr) {
let isPrime = true;
for (let i = 2n; i <= 1000000n; i++) {
if (x % i === 0n) {
console.log("NO");
isPrime = false;
break;
}
}
if (isPrime) console.log("YES");
}
'코딩 > 알고리즘' 카테고리의 다른 글
백준) 10773 - 제로 JS (0) | 2024.11.27 |
---|---|
백준) 1157 - 단어 공부 JS (0) | 2024.11.25 |
백준) 2417 - 정수 제곱근 JS (0) | 2024.11.24 |
백준) 1920 - 수 찾기 JS (0) | 2024.11.23 |
백준) 1904 - 01타일 JS (0) | 2024.11.22 |