반응형
문제 4-2번
N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 소수를 출력하 는 프로그램을 작성하세요. 예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출 력한다. 단 910를 뒤집으면 19로 숫자화 해야 한다. 첫 자리부터의 연속된 0은 무시한다.
🍄 입력설명
첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다. 각 자연수의 크기는 100,000를 넘지 않는다.
🍄 출력설명
첫 줄에 뒤집은 소수를 출력합니다. 출력순서는 입력된 순서대로 출력합니다.
🍄 입력예제 1
9
32 55 62 20 250 370 200 30 100
🍄 출력예제 1
23 2 73 2 3
정답 코드
- isPrime은 소수를 판별하는 식이다. 시간을 아끼기 위해, 해당 숫자의 제곱근까지 만큼의 수가 약수인지 아닌지만 판별해준다. 나누어 떨어지는 것이 없으면 소수이다.
solution(arr) 함수에서 x의 값을 뒤집어준다. 문자열로 변경하여 배열로 바꿔주고, 뒤집어서 다시 문자열로 만들어준 후, Number로 숫자로 만들면 자연스럽게 맨 앞 0이 떨어져 나간다.
function isPrime(num) {
if (num === 1) return false;
for (let i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) return false;
}
return true;
}
function solution(arr) {
let answer = [];
for (let x of arr) {
x = Number(x.toString().split("").reverse().join(""));
if (isPrime(x)) answer.push(x);
}
return answer;
}
let arr = [32, 55, 62, 20, 250, 370, 200, 30, 100];
console.log(solution(arr));
//(5) [23, 2, 73, 2, 3] 출력
728x90
반응형
'알고리즘' 카테고리의 다른 글
[JS] 알고리즘 기초 정복 4-4번_졸업선물 (0) | 2021.07.16 |
---|---|
[JS] 알고리즘 기초 정복 4-3번_멘토링 (0) | 2021.07.16 |
[JS] 알고리즘 기초 정복 4-1번_자릿수의 합 (0) | 2021.07.16 |
[JS] 알고리즘 기초 정복 3-5번_문자열 압축 (0) | 2021.07.15 |
[JS] 알고리즘 기초 정복 3-4번_가장 짧은 문자거리 (0) | 2021.07.15 |