티스토리 뷰
#. Problem
* The copyright in this matter is in Inflearn
#. Resolution Process
1. Read and understand problem
2. Redefine the problem + abstract
3. Create solution plan (select Algorithm, Data structure)
4. Prove the plan (check performance time and usage memory)
5. Carry out the plan
6. Look back on the plan and find a way to improve it
#. Solve
1. 먼저 입력된 숫자를 뒤집는 단계(뒤집으면서 첫 자리부터 연속된 0은 무시).
소수인지 확인하는 단계.
이렇게 두 단계를 거쳐야 한다.
숫자를 뒤집기 위해서는 자연수가 0이 될 때까지 10으로 나누면서 나머지를 쌓아주어야 한다.
그 다음 소수인지 확인하는 단계에서는 최대 N이 100,000 을 넘지 않으므로 2부터 나눠주면서,
나누어떨어지는 수가 있다면 소수이고, 없다면 소수가 아니라는 bool 값을 return 해준다.
#. Code
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | #include<stdio.h> using namespace std; int reverse(int &x) { int tmp = 0; while (x) { tmp = tmp * 10 + (x % 10); x /= 10; } return tmp; } bool isPrime(int &x) { if (x == 1) return false; for (int i = 2; i < x; i++) { if (x % i == 0) return false; } return true; } int main() { freopen("input.txt", "rt", stdin); int n, num, i, isPrm; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d", &num); num = reverse(num); isPrm = isPrime(num); if (isPrm) printf("%d ", num); } puts(""); return 0; } | cs |
#. Other Code
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #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; bool flag=true; if(x==1) return false; for(i=2; i<x; i++){ if(x%i==0){ flag=false; break; } } return flag; } int main(){ 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; } | cs |
동일한 로직으로 구현하였다.
내가 짠 코드와 비교했을 떄 (line 42) 함수의 반환값을 그대로 사용하는 방법도 좋을 것 같다.
나는 bool 변수를 따로 만들어서 반환값을 저장 후 조건문에 적용시켰기 때문에..!
#. Result
- Input --------------------------------------------------------
5
32 55 62 3700 250
------------------------------------------------------------------
- Output --------------------------------------------------------
23 73
------------------------------------------------------------------
'PS > Problem_Solving' 카테고리의 다른 글
[Inflearn] 선생님 퀴즈 (0) | 2020.04.21 |
---|---|
[Inflearn] 소수의 개수 (0) | 2020.04.21 |
[Inflearn] 가장 많이 사용된 자릿수 (0) | 2020.04.20 |
[Inflearn] 숫자의 총 개수(large) (0) | 2020.04.20 |
[Inflearn] 숫자의 총 개수(small) (0) | 2020.04.20 |