[회고] 신입 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은 예외적으로 생각해야 한다. 주의하자.