정리
입력: 알파벳 대문자 최대 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;
}