코드포스(CodeForce)

Educational Codeforces Round 29 - A. Quasi-palindrome

cepiloth 2018. 8. 17. 18:11
반응형


1. 문제


2. 알고리즘

키워드 - 구현


* panlindrome 이란?

panlindrome(회문)은 거꾸로 읽어도 제대로 읽는 것과 같은 문장이나 낱말이다.


* 문제 이해


문제에서 주어진 사항은 아래와 같다.

131 -> 거꾸로 읽어도 131 임으로 YES

320 -> 거꾸로 읽으면 023 임으로 NO

2010200 -> 0020102 회문이 있음으로 YES


* 문제 접근


전처리 과정으로 0을 제거 하고 진행 한다.

2010200 -> 20102

10 으로 나눠서 나머지가 0 이면 나눗셈을 진행하고 나머지가 존재하면 종료 한다.


3. 코드



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
#include <stdio.h>
 
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
#include <string>
 
using namespace std;
 
int main()
{
    int n; cin >> n;
    
    int cand = n;
 
    //[0 을 제거 한다]
    for(int i=0; ;i++) {
        if(cand % 10 == 0)
            cand /= 10;
        else
            break;
    }
 
    string str = to_string(cand);;
    const int size = str.size();
    vector<int> arr(size);
    for(int i=0; i<size; i++) {
        arr[i] = cand % 10;
        cand /= 10;
    }
 
    bool check = false;
    // 모든 크기를 순회할 필요는 없다
    // a[i] == a[배열의 크기  -i -1]
    for(int i=0; i<size/2; i++) {
        if(arr[i] != arr[size-i-1]) {
            check = true;
            break;
        }
    }
 
    if(check) {
        cout << "NO" << endl;
    } else {
        cout << "YES" << endl;
    }
 
    return 0;
}
cs

반응형