코딩테스트/JavaScript

[코딩테스트] 뒤집은 소수

CODE_PLAN 2023. 12. 25. 21:38

나의 풀이

function solution(arr) {
            let answer = [];
            answer == arr.reverse();
            answer = answer.filter((arr) => {
                // n 을 나누어 0이 되는 수를 담을 배열
                let a = [];
                for (let i = 2; i < n + 1; i++) {
                    n % i === 0 && a.push(i);
                }   
                // 나누어 0이되는 수가 자기자신과 1이면 소수
                // 2부터 시작했으므로 1은 제외하고 자기자신으로 나눠지면 반환
                return a[0] === arr ? true : false;
            });
            // for (let x of s) {
            //     if () {
            //         // 나눈게  1, 자기자신 
            //     }
            // }
            return answer;
        }


        let arr = [32, 55, 62, 20, 250, 370, 200, 30, 100];
        console.log(solution(arr));
    </script>

우선 뒤집는거랑 소수를 구현하는데 애썼다.. 

 

해설 정답 

<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>

 

풀이 포인트 1) while문 안의 뒤집는 방법에 대해서 익숙해야함

 

풀이 포인트2) 함수 하나를 하나더 만들어서 num === 1  이뜻은 즉, 소수인경우인데 이경우는 빼고 하는거다

밑에는 나누어떨어지는 즉, 약수가 존재할때 조건을 달아준것