ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 9933번: 민균이의 비밀번호
    문자열(String) 2018. 6. 29. 12:39
    반응형

    https://www.acmicpc.net/problem/9933


    1. 문제

    창영이는 민균이의 컴퓨터를 해킹해 텍스트 파일 하나를 자신의 메일로 전송했다. 파일에는 단어가 한 줄에 하나씩 적혀있었고, 이 중 하나는 민균이가 온라인 저지에서 사용하는 비밀번호이다. 파일을 살펴보던 창영이는 모든 단어의 길이가 홀수라는 사실을 알아내었다. 그리고 언젠가 민균이가 이 목록에 대해서 얘기했던 것을 생각해냈다. 민균이의 비밀번호는 목록에 포함되어 있으며, 비밀번호를 뒤집어서 쓴 문자열도 포함되어 있다. 예를 들어, 민균이의 비밀번호가 "tulipan"인 경우에 목록에는 "napilut"도 존재해야 한다. 알 수 없는 이유에 의해 모두 비밀번호로 사용 가능하다고 한다. 민균이의 파일에 적혀있는 단어가 모두 주어졌을 때, 비밀번호의 길이와 가운데 글자를 출력하는 프로그램을 작성하시오.


    2. 알고리즘

    키워드 - 문자열 처리


    문자열이 하나만 들어올수도 있다. 이거 찾느라고 암걸리는 줄.

    전체적인 문자열은 현재 문자열과 비교대상할 문자열을 reverse 하여 비교 한다.


    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
    51
    52
    53
    54
    #include <iostream>
    #include <sstream>
    #include <string>
    #include <algorithm>
    #include <functional>
    #include <vector>
    #include <list>
    #include <queue>
    #include <deque>
    #include <map>
    #include <set>
    #include <stack>
    #include <cstring>
    using namespace std;
     
    #define MAX_SIZE 100
    #define INF 0x7fffffff
     
    /*
    * @memory  - 1192 kb
    * @time    - 8 ms
    */
    int main() {
     
        cin.tie(0);
        std::ios::sync_with_stdio(false);
     
        int n; cin >> n;
     
        vector<string> arr(n);
        for(int i=0; i<n; i++) {
            cin >> arr[i];
        }
     
        string sol("");
        for(int i=0; i<n; i++) {
            
            for(int j=i; j<n; j++) {    
                string cand = arr[j];
                reverse(cand.begin(), cand.end());
                
                if (arr[i] == cand) {
                    sol.clear();
                    sol = cand;
                    break;
                }
            }
        }
     
        const int size = sol.size() / 2;
        cout << sol.size()  << " " << sol[size] << "\n";
        return 0;
    }
     
    cs

    반응형

    '문자열(String)' 카테고리의 다른 글

    백준 2675번: 문자열 반복  (0) 2018.07.03
    백준 2857번: FBI  (0) 2018.06.29
    백준 2789번: 유학 금지  (0) 2018.06.29
    백준 5586번: JOI와 IOI  (0) 2018.06.29
    백준 1120번: 문자열  (0) 2018.06.29

    댓글

Designed by Tistory.