모름

정리

입력: 알파벳 대문자 최대 50글자가 입력된다.

출력: 알파벳 대문자 글자를 팰린드롬(대칭문자열)로 만들어 출력한다.

 

1. 대칭 문자에서 홀수 개수의 문자는 1개만 존재한다. 

2. 'A' ~ 'Z' 는 Int 배열을 만들어 카운트 배열로 활용해 몇번 문자가 몇 개 있는지 확인한다.

3. 카운트 배열을 순서대로 순회하면서 앞과 끝에 차례대로 문자를 나열한다.

4. 순회 홀수 카운트가 2개 이상 나올 경우 Fail 이다.

5. 홀수 카운트는 항상 mid에 배치된다.

 

풀이

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

int arr[26];
int main()
{
    string name;
    cin >> name;

    for (char i : name){
        arr[i - 'A']++;
    }

    int failcnt = 0, pos = 0, begin = 0, end = name.length() - 1;
    for(int i = 0; i < 26; i++)
    {
        char c = i + 'A';
        
        if(arr[i] % 2 != 0) failcnt++;
        
        for(int j = 0; j < arr[i] / 2; j++){
            name[begin + pos] = c;
            name[end - pos] = c;
            pos++;
        }

        if(arr[i] % 2 != 0)
            name[end / 2] = c;
    }

    if(failcnt > 1)
        cout << "I'm Sorry Hansoo";
    else
        cout << name;
}