<뒤집은 소수>
: N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 소수를 출력하는 프로그램을 작성한다. 예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출력한다. 단 910을 뒤집으면 19로 숫자화해야 한다. 첫 자리부터의 연속된 0은 무시한다.
- 앞에서 배운대로 숫자를 문자열로 바꾼 후 역순으로 해도 되지만, 이번엔 숫자를 그대로 역순으로 바꿔보자.
- 함수를 하나 생성해서, 소수일 경우인 true를 반환하고, 소수가 아닐 경우엔 false를 반환한다.
! 플러스 개념
-> Math.sqrt(x)
- Math.sqrt(x) : x의 제곱근 값을 반환한다.
<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>
<script> //문자열로 바꾼 후 srj사용하기. 그리고 앞에 있는 0을 없애주기 위해 Number로 변환시켜주기 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>
1일 1알고리즘해야하는데, 문제만 풀고 인강 안봄. 이번만 당일에 한 걸로 쳐주겠어.