반응형
문제
N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 소수를 출력하 는 프로그램을 작성하세요.
예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출 력한다. 단 910를 뒤집으면 19로 숫자화 해야 한다. 첫 자리부터의 연속된 0은 무시한다.
풀이
#1
/**
* 소수인지 확인하는 방법
* 1. 2~n 떨어지는 수가 없는 경우
* 2. 2~n/2까지 나눠서 떨어지는 수가 없는 경우
* 2. 2~n의 제곱수까지 나눠서 떨어지는 수가 없는 경우
*/
function isPrime(n) {
if (n === 1) return false;
for (let i = 2; i < Math.sqrt(n / 2); i++) {
if (n !== i && n % i === 0) {
return false;
}
}
return true;
}
function solution(arr) {
const N = arr.length;
const answer = [];
for (let num of arr) {
const reversed = +[...(num + "")].reverse().join("");
if (isPrime(reversed)) answer.push(reversed);
}
return answer;
}
#2
function solution(arr) {
let answer = [];
for (let num of arr) {
let res = 0;
while (num) {
let t = num % 10; // 각 자릿수(뒷 자리부터)
res = res * 10 + t;
num = parseInt(num / 10); // 남은 숫자
}
if (isPrime(res)) answer.push(res);
}
return answer;
}
반응형
'Algorithm > Inflearn' 카테고리의 다른 글
[알고리즘/인프런] 졸업 선물 (1) | 2023.05.30 |
---|---|
[알고리즘/인프런] 자릿수의 합 (0) | 2023.05.29 |
[알고리즘/인프런] 멘토링 (0) | 2023.05.29 |
[알고리즘/인프런] 섬나라 아일랜드 (0) | 2023.05.21 |
[알고리즘/인프런] 송아지 찾기 (0) | 2023.05.21 |