본문 바로가기

Algorithm/String

(C++) - 백준(BOJ) 10174번 : 팰린드롬

반응형

www.acmicpc.net/problem/10174

 

10174번: 팰린드롬

팰린드롬은 앞으로 읽으나 뒤로 읽으나 똑같은 단어나 숫자들을 말한다. 일반적으로 대소문자를 구분하지 않지만, 공백은 구분한다. 다음은 팰린드롬의 예시이다. Anna Harrah Arora Nat tan 9998999 123

www.acmicpc.net

 

풀이방법

 1. 처음 줄 수에 대한 입력을 받은 후 '\n'가 cin의 버퍼에 남아있을 때 비워주기 위해 ignore함수를 호출해줍니다.

 2. cin의 에러비트를 초기화해주고 문장을 입력받습니다.

 3. 대문자가 있다면 소문자로 변환해줍니다.

 4. 팰린드롬 여부를 검사한 후 출력합니다.

 

 

Code 

#include <bits/stdc++.h>
using namespace std;

string toLowerCase(string word){
    string tmp = "";
    for(int i = 0; i < word.size(); i++){
        if('A' <= word[i] && word[i] <= 'Z'){
            tmp += word[i] - 'A' + 'a';
        }else
            tmp += word[i];
    }
    return tmp;
}

bool isPalindrome(string word){
    for(int i = 0; i < word.size()/2; i++){
        if(word[i] != word[word.size()-1-i]) return false;
    }
    return true;
}

int main(){
    int n;
    cin >> n;
    cin.ignore();
    while(n--){
        string word;
        cin.clear();
        getline(cin,word);
        word = toLowerCase(word);
        if(isPalindrome(word)) cout << "Yes\n";
        else cout << "No\n";
    }
}