판다꼬마 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