티스토리 뷰

알고리즘/코딩테스트 공부

4-2 뒤집은 소수

YG - 96년생 , 강아지 있음, 개발자 희망 2021. 11. 28. 04:00

문제

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

풀이

function solution(arr) {
  let answer = [];
  let mirror;
  for (let x of arr) {
    let cnt = 0;
    mirror = +x.toString().split("").reverse().join("");
    for (let i = 2; i < Math.sqrt(mirror); i++) {
      if (Number.isInteger(mirror / i) === true) cnt++;
    }
    if (cnt === 0 && mirror !== 1) answer.push(mirror);
    console.log(x, mirror);
  }
  return answer;
}

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

x.toString().split("").reverse().join() 으로 거꾸로 뒤집었습니다

다른 풀이

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);
    }
    //console.log(res);
    if (isPrime(res)) answer.push(res);
  }
  return answer;
}

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

while 로 res= res*10 + t를 이용하여 문자를 거꾸로 뒤집었습니다

 

'알고리즘 > 코딩테스트 공부' 카테고리의 다른 글

4-5 K번째 큰 수  (0) 2021.11.28
4-3 멘토링  (0) 2021.11.28
4-1 자릿수의 합  (0) 2021.11.28
3-5 문자열 압축  (0) 2021.11.27
3-4 가장 짧은 문자거리  (0) 2021.11.27
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함