I'm Sorry Hansoo
를 출력한다.팰린드롬을 만들 수 있는 경우
answer[size/2] = i + 'A';
맨 앞과 맨뒤
에서 부터 A~Z(0~26) 순으로 남은 알파벳 개수만큼 넣어 주면 팰린드롬이 되면서 동시에 사전순이다.팰린드롬을 만들 수 없는 경우
I'm Sorry Hansoo
를 출력한다.answer[size/2] = i + 'A';
를 선언해서 런타임 에러 (Segfault)
가 발생했다. string answer를 char answer[50]으로 바꿨다. 50은 최대글자다.#include <bits/stdc++.h>
using namespace std;
int alpha[26];
char answer[50];
void solve(int odd_cnt, int size) {
if(odd_cnt > 1) {
cout << "I'm Sorry Hansoo";
return;
} else {
int l=0, r=size-1;
for(int i=0; i<26; i++) {
while(alpha[i] > 1) {
answer[l++] = i + 'A';
answer[r--] = i + 'A';
alpha[i] -= 2;
}
}
for(int i=0; i<size; i++) {
cout << answer[i];
}
}
}
int main() {
string s;
cin >> s;
int size = s.size();
for(int i=0; i<size; i++) {
alpha[s[i]-'A']++;
}
int odd_cnt = 0;
for(int i=0; i<26; i++) {
if(alpha[i]%2 == 1) {
odd_cnt++;
answer[size/2] = i + 'A';
alpha[i+'A']--;
}
}
solve(odd_cnt, size);
return 0;
}