ABOUT ME

알고리즘 공부하는 블로그 입니다.

Today
Yesterday
Total
  • Educational Codeforces Round 29 - A. Quasi-palindrome
    코드포스(CodeForce) 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

    반응형

    댓글

Designed by Tistory.