๐ฅ Algorithm/Baekjoon
[๋ฐฑ์ค 9020๋ฒ] ๊ณจ๋๋ฐํ์ ์ถ์ธก - ์๋ฐ์คํฌ๋ฆฝํธ(nodejs)
Lennon
2022. 1. 18. 18:43
728x90
๋ฐ์ํ
https://www.acmicpc.net/problem/9020
9020๋ฒ: ๊ณจ๋๋ฐํ์ ์ถ์ธก
1๋ณด๋ค ํฐ ์์ฐ์ ์ค์์ 1๊ณผ ์๊ธฐ ์์ ์ ์ ์ธํ ์ฝ์๊ฐ ์๋ ์์ฐ์๋ฅผ ์์๋ผ๊ณ ํ๋ค. ์๋ฅผ ๋ค์ด, 5๋ 1๊ณผ 5๋ฅผ ์ ์ธํ ์ฝ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์์์ด๋ค. ํ์ง๋ง, 6์ 6 = 2 × 3 ์ด๊ธฐ ๋๋ฌธ์ ์์๊ฐ ์
www.acmicpc.net
const fs = require('fs');
let input = fs
.readFileSync('dev/stdin')
.toString()
.trim()
.split('\n')
.map((v) => +v);
input.shift();
const isPrime = (num) => {
if (num === 1) return false;
for (let i = 2; i <= Math.sqrt(num); i += 1) {
if (num % i === 0) {
return false;
}
}
return true;
};
const primeArr = [];
for (let i = 2; i <= 10000; i++) {
if (isPrime(i)) {
primeArr.push(i);
}
}
input.filter((v) => {
if (primeArr.includes(v / 2)) {
console.log(`${v / 2} ${v / 2}`);
} else {
const arr = [];
for (let i = 0; i < primeArr.length; i++) {
for (let j = i + 1; j < primeArr.length; j++) {
if (primeArr[i] + primeArr[j] === v) {
arr.push([primeArr[i], primeArr[j]]);
break;
}
if (primeArr[i] > v) {
break;
}
}
}
arr.sort((a, b) => {
const aValue = a[1] - a[0];
const bValue = b[1] - b[0];
return aValue - bValue;
});
console.log(`${arr[0][0]} ${arr[0][1]}`);
}
});
์์ ํ๋ณ ํจ์๋ฅผ ๋ง๋ค๊ณ 10000์ดํ์ ์์๋ฅผ primeArr์ pushํ๋ค.
๊ทธ ํ 10000์ดํ์ ์ง์ ์ ๋ ฅ๊ฐ์ ๋ํด ์์์ ํฉ์ผ๋ก ์ ์๋๋ ๊ฐ๋ค์ arr ๋ฐฐ์ด์ ๋ฃ๊ณ ex) 16 => [3,13], [5,11]
sortํจ์๋ฅผ ์ด์ฉํด ๊ฐ์ ์ฐจ์ด๊ฐ ๊ฐ์ฅ ์์ ๊ฒ๋ค๋ก ์ ๋ ฌํ ํ 0๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ค.
728x90
๋ฐ์ํ