코딩테스트/JS 알고리즘 문제(JS)
뒤집은 소수
판다꼬마
2023. 1. 7. 19:08
728x90
문제
입력
- 첫 줄에 자연수의 개수 N이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다. 각 자연수의 크기는 100000를 넘지 않는다.
출력
첫 줄에 뒤집은 소수를 출력합니다. 출력순서는 입력된 순서대로 출력합니다.
입력 예시
9
32 55 62 20 250 370 200 30 100
출력 예시
23 2 73 2 3
풀이 방법
주어진 배열을
Number(s[i].toString().split("").reverse().join("")
을 이용해서 숫자들을 뒤집어 준 후 Number를 이용하여 앞에 0이 있으면 자연수로 만들어 주었다.
그 후 소수 판별을 하기위해 2, 3, 5 ,7..으로 나누어서 나머지가 0이 아닌 것들을 골라서 배열에 넣고 값을 출력하였다.
내 코드
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
const sol = (s)=>{
let newArr=[];
let answer=[];
let len=s.length;
for (let i=0; i<len; i++){
newArr.push(Number(s[i].toString().split("").reverse().join("")))
}
for (let x=0; x<newArr.length; x++){
{
if(newArr[x]==2 || newArr[x]==3 || newArr[x]==5 || newArr[x]==7 ){
answer.push((newArr[x]))
}
else if (newArr[x]%2!==0 && newArr[x]%3!==0 && newArr[x]%5!==0 && newArr[x]%7!==0) {
answer.push((newArr[x]))}
}
}
for(let j = 0; j < answer.length; j++){
if (answer[j] === 1) {
answer.splice(j, 1);
j--;
}
}
return answer;
}
let arr=[32, 55, 62, 20, 250, 370, 200, 30, 100];
console.log(sol(arr));
</script>
</body>
</html>
Solution
방법 1
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function isPrime(num){
if(num===1) return false;
for(let i=2; i<=parseInt(Math.sqrt(num)); 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;
res=res*10+t;
x=parseInt(x/10);
}
if(isPrime(res)) answer.push(res);
}
return answer;
}
let arr=[32, 55, 62, 20, 250, 370, 200, 30, 100];
console.log(solution(arr));
</script>
</body>
</html>
방법 2
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function isPrime(num){
if(num===1) return false;
for(let i=2; i<=parseInt(Math.sqrt(num)); 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;
}
let arr=[32, 55, 62, 20, 250, 370, 200, 30, 100];
console.log(solution(arr));
</script>
</body>
</html>
느낌점
내가 짠 코드는 너무 길었다.
그래서 보완을 하고 싶어서 솔루션 코드를 보았는데 이렇게 간단한 방법이 있다는 것도 알았다.
728x90