[알고리즘] 2. 뒤집은 소수

__Dev_1·2021년 11월 18일
0

Algorithm

목록 보기
2/4
post-thumbnail

📌풀이

자연수가 입력되면 각 자연수를 뒤집은 후, 뒤집은 수가 소수이면 출력해라.
단, 첫 자리부터 0 이거나 연속된 숫자는 0을 무시하고 출력한다.

📌입출력예시

32 55 62 20 250 370 200 30 100
23 2 73 2 3

🔑KEY

  • 소수의 조건: 약수는 1과 자기자신만 있다.

📌풀이

🎨첫번째 풀이

//뒤집은 소수 만들기
function isPrime(num){                  
    if(num ===1 ) return false;
    // 제곱근 까지 보면 됨
    for(let i = 1 ; i < num) ; i++){    
        if(num % i === 0)     return false
    }
    return true;
}
function solution(arr){
    let answer = [];
    for(let x of arr){
        let a = Number(x.toString().split('').reverse().join(''));
        if(isPrime(a)) answer.push(a);
    }
    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 a = Number(x.toString().split('').reverse().join(''));
        if(isPrime(a)) answer.push(a);
    }
    return answer;
}

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

📌부족했던 점

  • isPrime 함수에서 for 문안의 조건을 생각하지 못했다.
    ( 1을 제외한 숫자부터 증가시켜야 했고, 해당 자연수의 절반까지 돌려주면 됨)
profile
메모장 :)

0개의 댓글