[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

💻 CS/알고리즘 연습

[알고리즘 연습] 뒤집은 숫자의 소수 여부 판단 (by C++)

inu 2020. 3. 13. 22:13
반응형

가장 많이 사용된 자릿수뒤집은 숫자의 소수 여부 판단

  • N을 입력받고 N개의 자연수를 입력받는다.
  • 자연수를 뒤집고 소수 여부를 판단하여, 소수일 경우 출력한다.
  • 예를 들어, 910을 뒤집으면 19로 바꾸어 판단해야 한다.
  • 예를 들어, 5을 입력하고 32 55 62 3700 250을 입력하면 23과 73이 출력된다.

풀이

#include <stdio.h>

int reverse(int x) {
    int res=0, tmp;
    while(x > 0) {
        tmp = x % 10;
        res = res * 10 + tmp;
        x = x / 10;
    }
    return res;
}

bool isPrime(int x) {
    int i;

    if (x == 1) {
        return false;
    }

    for(i=2; i<x; i++) {
        if (x % i == 0) return false;        
    }

    return true;
}

int main() {
    //freopen("input.txt", "rt", stdin);
    int n, num, i, tmp;

    scanf("%d", &n);

    for(i = 1;i <= n;i++) {
        scanf("%d", &num);
        tmp = reverse(num);
        if (isPrime(tmp)) printf("%d ",tmp);
    }

    return 0;
}

- reverse : 이전값을 10으로 곱해 자릿수를 늘려주는 것이 포인트

- 반복문 사용시 그 횟수를 잘 생각하자. 아래 main의 반복문을 돌릴 때 i = 0으로 시작했다면 i < n을 조건으로 주어야 횟수가 정상적으로 처리된다.

- 소수 확인 시 1은 예외적으로 생각해야 한다. 주의하자.

반응형