안녕하세요. 오늘은 팰린드롬을 만들어볼 거예요.

문제

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

아이디어

맨 중간에 있는 문자를 빼면 모든 문자가 이리저리 다 움직일 수 있습니다.
그러므로 그냥 맨 중간을 제외한 나머지 문자들의 개수가 모두 짝수이면 Yes, 아니면 No를 출력해주면 됩니다.

소스코드

#include <iostream>
#include <string>
using namespace std;

int main(void)
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    int len, i, cnt[26] = { 0 };
    string s;

    cin >> len >> s;
    for (i = 0; i < len; i++)
        cnt[s[i] - 'a']++;
    if (len % 2 == 1) cnt[s[len / 2] - 'a']--; //중간은 빼주기

    for (i = 0; i < 26; i++)
    {
        if (cnt[i] % 2 == 1)
        {
            cout << "No";
            return 0;
        }
    }
    cout << "Yes";
}


감사합니다.

0개의 댓글