CODE KATA #24

loopbackseal·2021년 2월 27일
0

CODE KATA 🧗‍♂️

목록 보기
24/32
post-thumbnail

뒤집힌 소수

N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면
그 소수를 출력하는 프로그램을 작성하세요. 예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출력한다. 단 910를 뒤집으면 19로 숫자화 해야 한다. 첫 자리부터의 연속된 0은 무시한다.

나의 풀이

            function isPrime(num){
                if (num < 2) return false;
                else if (num % 2 === 0) {
                    if (num !== 2) return false;
                }
                let i = 3;
                while (i < num) {
                    if (num % i === 0) return false;
                    i++;
                }
                return true;
            }
            function solution(arr){
                let answer=[];
                for (let x of arr) {
                    let spt = x.toString().split('');
                    let reverse = 0;
                    for (let i = 0; i < spt.length; i++) {
                        reverse += spt[i]*Math.pow(10,i);
                    }
                    if (isPrime(reverse)) answer.push(reverse);
                }
                return answer;
            }
            
            let arr=[32, 55, 62, 20, 250, 370, 200, 30, 100];
            console.log(solution(arr));

정답 풀이

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

배운 점 & 아쉬운 점

배운점

Math.sqrt(num)을 통해서 제곱근을 구할 수 있다는 점을 배웠다.

아쉬운 점

소수에 대한 이해도가 부족했던 것이 아쉽다. 제곱근까지만 판별해도 소수 여부를 판별할 수 있으나, num전체를 판별에 사용했고, 다중 if문을 통해서, 1인지, 짝수인지(그 중 2인지 여부), 그 외의 경우를 따로 계산하였으나, 정답의 경우 1인지 여부만 파악하고 같은 방식으로 판별해도 원하는 출력값을 얻을 수 있었다. 큰 차이는 없었겠지만 런타임 자체를 줄일 수 있도록 더 고민해야겠다.

profile
CAU Business Administration

0개의 댓글