본문 바로가기

Algorithm/String

(C++) - 백준(BOJ) 9933번 : 민균이의 비밀번호

반응형

www.acmicpc.net/problem/9933

 

9933번: 민균이의 비밀번호

첫째 줄에 단어의 수 N (2 ≤ N ≤ 100)이 주어진다. 다음 N개 줄에는 파일에 적혀있는 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 소문자로만 이루어져 있으며, 길이는 2보다 크고 14보다 작은

www.acmicpc.net

문자열 처리 문제였습니다.

 

풀이방법

 1. 입력 :  string 1차원 배열 word를 선언한 뒤 n개의 단어를 입력받습니다.

 2. 비교 : word의 단어들 중 두 쌍을 뽑아 한쪽을 뒤집어 만약 같다면 비밀번호이므로 출력한 뒤 프로그램을 종료합니다. 이 문제는 조합이 아닙니다. 즉 a,b를 비교했다고 넘어가면 안되며 b,a도 비교해 줘야 맞습니다. 한쪽만 뒤집기 때문에 다른쪽도 나중에 뒤집어서 비교해야됩니다. 

 

Code

#include <bits/stdc++.h>
using namespace std;
int n;
string word[101];

string getOppositeWord(string w){
    string tmp = "";
    for(int i = 0; i < w.size(); i++){
        tmp += w[w.size()-1-i];
    }
    return tmp;
}
int main(){
    cin >> n;
    for(int i = 0; i < n; i++) cin >> word[i];
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            if(word[i] == getOppositeWord(word[j])){
                int size = word[i].size();
                cout << size << ' ' << word[i][size/2]; 
                return 0;
            }
        }
    }
}