1. 소수 찾기 (백준 1978번)
링크
너무 돌려서 생각한 것 같다. 이상한 방식으로 삽질하다가 제일 안정적인 방식을 놓쳐버렸다.
소수 중에서 10 미만의 소수로 나누어서, 나머지가 0이 아닌 경우을 찾으려 했는데 예외 케이스가 너무 많았다. (틀린 방법)
내 답안
const input = require("fs")
.readFileSync(process.platform === "linux" ? "/dev/stdin" : "./input.txt")
.toString()
.trim()
.split("\n");
const N = Number(input[0]);
const arr = input[1].split(" ").map(Number);
let init = [1, 2, 3, 5, 7];
let count = 0;
for (let i = 0; i < N; i++) {
const k = arr[i];
if (k === 1) continue;
if (init.includes(k)) count += 1;
if (k % 2 !== 0 && k % 3 !== 0 && k % 5 !== 0 && k % 7 !== 0) count += 1;
}
console.log(count);
고친 답안
const input = require("fs")
.readFileSync(process.platform === "linux" ? "/dev/stdin" : "./input.txt")
.toString()
.trim()
.split("\n");
const N = Number(input[0]);
const arr = input[1].split(" ").map(Number);
let count = 0;
arr.forEach((n) => {
if (n === 1) return;
let result = true;
for (let i = 2; i < n; i++) {
if (n % i === 0) {
result = false;
break;
}
}
if (result) count += 1;
});
console.log(count);
2. 분해합 (백준 2231번)
링크
자릿수를 구하는 게 좀 어려웠다. 알고리즘 몇몇을 찾아보니 수학적으로 접근하여 풀던데, 난 그냥 귀찮아서 문자열로 파싱하고 각 자릿수를 map 함수를 통해 정수화 했다.
내 답안 (정답)
const N = Number(`216`);
let result = 0;
for (let i = 1; i < N; i++) {
const sum = i
.toString()
.split("")
.map(Number)
.reduce((p, c) => p + c);
if (sum + i === N) {
result = i;
break;
}
}
console.log(result);