Data Structure & Algorithm
[알고리즘-JS] 숫자 뒤집고 소수 찾기
fnow
2022. 5. 3. 18:15
반응형
문제
N개의 자연수가 입력되면, 숫자를 뒤집고 뒤집은 숫자가 소수일 경우 출력하시오.
입력 예제
[30, 37, 109, 112, 43]
출력 예제
[3, 73, 211]
풀이
방법 1
// 소수 판별 함수
function isPrime(num) {
if(num===1) return false; // 1은 소수가 아니다.
// 해당 숫자를 2~자기자신만큼 나눴을 때
// 중간에 나머지 없이 나뉘는 게 있다면 소수가 아님
for (let i = 2; i < parseInt(num/2); i++) {
if(num % i === 0) return false;
}
return true;
}
function solution(arr) {
let answer = [];
for (let x of arr) {
let res = 0; // 뒤집을 숫자 넣을 곳
// 숫자 뒤집기
while(x) {
let t = x % 10; // 1의 자리
res = res * 10 + t;
x = parseInt(x/10);
}
if(isPrime(res)) answer.push(res);
}
return answer;
}
방법 2
function isPrime(num) {
if(num===1) return false;
for (let i = 2; i < parseInt(num/2); i++) {
if(num % i === 0) return false;
}
return true;
}
function solution(arr) {
let answer = [];
for (let x of arr) {
let res = Number(x.toString().split("").reverse().join(""));
if(isPrime(res)) answer.push(res);
}
return answer;
}
for (let i = 2; i < parseInt(num/2); i++)
부분에서 num이 아닌 num/2인 이유 :
8을 예를 들면, 1x8, 2x4, (4x2, 8x1) 괄호 부분은 중복이므로 반만 순회해도 된다.
반응형