N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 수를 출력하는 프로그램을 작성하세요. 예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출력 한다. 단 910를 뒤집으면 19로 숫자화 해야 한다. 첫 자리부터의 연속된 0은 무시한다. 뒤집는 함수인 int reverse(int x) 와 소수인지를 확인하는 함수 bool isPrime(int x)를 반드시 작성하여 프로그래밍 한다.
입력
5
32 55 62 3700 250
출력
23 73
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int reverse(int x) {
int result = 0, tmp;
while (x > 0) {
tmp = x % 10;
result = result * 10 + tmp;
x = x / 10;
}
return result;
}
bool isPrime(int x) {
int i;
if (x == 1)return false;
bool flag = true;
for (i = 2; i < x;i++) {
if (x % i == 0) {
flag = false;
break;
}
}
return flag;
}
int main() {
int N, num, tmp;
scanf("%d", &N);
for (int i = 1; i <= N; i++) {
scanf("%d", &num);
tmp = reverse(num);
if (isPrime(tmp)) printf("%d ",tmp);
}
return 0;
}
- 입력된 숫자를 뒤집는 함수 알고리즘 익히기
- bool 함수로 소수인지 아닌지 판별하는 알고리즘 익히기. 이때 주의할 것은 1은 소수가 아니기 때문에 만약 1이 입력되면 false를 반환하는것이 중요하다.
- N을 받고, N만큼 for문을 돌린다. for문안에는 scanf로 숫자를 받고 뒤집고 -> 소수를 체크하는 함수를 넣는다.
- 이런식으로 코드를 짜면, scanf받은 첫 숫자 => 결과, 그리고 그 다음 숫자 scanf로 입력받기 => 결과 . . . N만큼 반복 이런식으로 나온다고 생각했었는데, 결과는 N 만큼 숫자를 전부 입력한 다음에 한꺼번에 출력된다.
'[알고리즘] 문제풀이 연습' 카테고리의 다른 글
[알골 90제] 37번 - LRU 카카오 캐시 문제 변형 (0) | 2019.07.23 |
---|---|
[알골 90제] 15/16/17 (0) | 2019.07.18 |
[알골 90제] 13번 - 가장 많이 상용된 자릿수 (0) | 2019.07.13 |
[0707 복습] 알골 연습문제 90제 - 11번 (0) | 2019.07.07 |
[0706 복습] 알골 연습문제 90제 : 6~10번 (0) | 2019.07.06 |