숫자들이 담긴 배열이 입력되면
각 숫자들을 뒤집고,
뒤집은 숫자가 소수인지 확인한 후
소수이면 출력한다.
단 예를 들어 200 뒤집어서 002 가 되는 경우
2로 출력한다.
const arr = [32, 55, 62, 20, 250, 370, 200, 30, 100];
console.log(solution(arr));
예제를 보면 이해가 쉽다
32를 뒤집어서 23
23은 소수이므로
23 출력
이 예제가 입력되면 출력되는 수는
23, 2, 73, 2, 3 이다.
function solution(arr) {
const answer = [];
for (const num of arr) {
let cnt = 0;
const changedNum = Number(num.toString().split('').reverse().join(''));
for (let i = 2; i < Math.ceil(Math.sqrt(changedNum)); i++) {
if (changedNum % i === 0) {
cnt += 1;
}
}
if (cnt === 0 && changedNum > 1) answer.push(changedNum);
}
return answer;
}
const arr = [32, 55, 62, 20, 250, 370, 200, 30, 100];
console.log(solution(arr));
function solution(arr) {
const answer = [];
for (const num of arr) {
let cnt = 0;
const changedNum = Number(num.toString().split('').reverse().join(''));
answe에 빈 배열 할당해놓고
첫 for문을 돌린다.
cnt는 나중에 쓸거다.
changedNum에다가
toString,split으로 하나씩 끝어진 배열 만들고
reverse로 뒤집어서 join으로 하나로 합친 문자열로 만들고
Number로 숫자로 만들어준다.
이거 할때가 제일 재밌다..
function solution(arr) {
const answer = [];
for (const num of arr) {
let cnt = 0;
const changedNum = Number(num.toString().split('').reverse().join(''));
for (let i = 2; i < Math.ceil(Math.sqrt(changedNum)); i++) {
if (changedNum % i === 0) {
cnt += 1;
}
}
if (cnt === 0 && changedNum > 1) answer.push(changedNum);
}
return answer;
}
const arr = [32, 55, 62, 20, 250, 370, 200, 30, 100];
console.log(solution(arr));
두번째 for문은 changedNum이 소수인지 아닌지 판별한다.
어... 저 중간에 조금 곤란해 보이는게 있는데
저건 이걸 참고하면 된다.
https://kong-dev.tistory.com/76
그래서 소수가 아니라면 카운트에 숫자가 올라간다.
if 문에서 카운트가 0이고 changedNum이 1보다 크면 answer에다가 changedNum을 push해준다.
이번에느 센세의 코드를 보자
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));
음 함수 두개 돌리셨네^^
나도 그냥 두개돌릴걸
뭔가 두개 돌리면 안될거 같아서 하나로 돌린건데
두개돌려도 되나보당 ㅎ
첫번째 함수는 소수를 판별하는 함수이다.
1이 들어오면 바로 false를 얼리리턴하고
소수면 true를 아니면 false를 리턴한다.
두번째 함수는 숫자를 뒤집은 숫자로 만들고
if문을 통해 뒤집은 숫자가 소수이면 answer에 push한다.
으음.. 함수 두개 쓰면 안될줄 알고 쫄았는데
앞으로 쫄지말자.
우리집 시니어가 말해준건데,
명확한 건 함수로 따로 빼줘도 괜찮다고 한다.
음.. 명확한거..가 뭔지가 명확하지 않은데 어카누..?
'문제풀이 > 인프런 알고리즘 문제풀이' 카테고리의 다른 글
4-5 k번째 큰수 (0) | 2021.12.20 |
---|---|
4-4 졸업선물 (0) | 2021.12.20 |
4-3 멘토링 (0) | 2021.12.20 |
4-1 자릿수의 합 (0) | 2021.12.14 |
격자판 최대합 (0) | 2021.12.10 |
댓글