[알고리즘] 뒤집은 소수

Eunhye Kim·2023년 12월 9일
0

알고리즘

목록 보기
4/10

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

입력 설명

첫 줄에 자연수의 개수 N3(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다.
각 자연수의 크기는 100,000를 넘지 않는다.

출력 설명

첫 줄에 뒤집은 소수를 출력합니다. 출력순서는 입력된 순서대로 출력합니다.

입력 예제

9
32 55 62 20 250 370 200 30 100

출력예제

23 2 73 2 3

풀이


function solution() {
  let isDecimal = false;
  let answer = [];

  for (let i = 0; i < arr.length; i++) {
    // 숫자 뒤집기
    let reverse = '';

    while (arr[i]) {
      reverse += arr[i] % 10;
      arr[i] = parseInt(arr[i] / 10);
    }

    let num = parseInt(reverse);

    if (num % i !== 0 && num % i !== 1) {
      isDecimal = true;
      answer.push(num);
    }
  }

  return answer;
}

2번 째 풀이

function isPrime(res) {
  if (res === 1) return false;
  for (let i = 2; i <= res / 2; i++) {
    if (res % i === 0) return false;
  }
  return true;
}

function solution() {
  let answer = [];

  for (let i = 0; i < arr.length; i++) {
    let res = 0;
    while (arr[i]) {
      let reverse = arr[i] % 10;
      res = res * 10 + reverse;
      arr[i] = parseInt(arr[i] / 10);
    }
    console.log(res);
    if (isPrime(res)) {
      answer.push(res);
    }
  }
  console.log(answer);
  return answer;
}
profile
개발에 몰두하며 성장하는 도중에 얻은 인사이트에 희열을 느낍니다.

0개의 댓글