알고리즘

[JS] 알고리즘 기초 정복 4-2번_뒤집은 소수

햄❤️ 2021. 7. 16. 22:03
반응형

문제 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
반응형