본문 바로가기
백준

[C++] 백준 1254번: 팰린드롬 만들기 (Silver 2)

by MINU.SHINNNN 2023. 1. 15.

풀이

1. substr에 대해 isPalindrom을 통해 팰린드롬인지 확인

2. 팰린드롬을 찾았을 경우 원래 문자열 크기에 인덱스만큼 더해준다

리뷰

1. 오른쪽 인덱스를 고정하고, 왼쪽 인덱스를 하나씩 밀어가며 비교하는 코드를 제출했으나 실패~, 중간에 같은 문자가 나와버리면 오답이 되었다.

2. 기존 문자에서 왼쪽 인덱스를 하나씩 밀어가면서 이미 팰린드롬이 완성되는 문자열을 찾는 것이 중요했다.

3. 팰린드롬이 아닌 문자에 대해서만 문자를 추가 해주면 되기 때문!!...

#include <iostream>
#include <string>

using namespace std;
 
string s;
int answer = 0;
 
bool isPalindrom(string str)
{
    int cnt = str.size()/2;
    for(int i=0; i<cnt; i++){
        if(str[i]!=str[str.size()-1-i]){
            return false;
        }
    }
 
    return true;
}
 
int main()
{
    freopen("1254.txt", "r", stdin);
    cin>>s;
    
    answer = s.size()*2-1;
    for(int i=0; i<s.size(); i++){
        string temp = s.substr(i, s.size()-i);
        cout << temp << endl;
        if(isPalindrom(temp)){
            answer = s.size()+i;
            break;
        }
    }
 
    cout<<answer<<"\n";
    return 0;
}