https://www.acmicpc.net/problem/1213
알파벳 대문자로만 이루어진 문자열이 팰림드롬으로 바꿀 수 있는지 판별하고, 바꿀 수 있다면 사전 순 팰린드롬 문자열로 바꿔 출력하는 문제다.
map<string, int> p;
int main() {
cin >> s;
for (int i = 0; i < s.size(); i++) {
k = s[i];
p[k] += 1;
}
for (auto c : p) {
if (c.second % 2==1) {
arr[l] = c.first;
l++;
}
cnt +=c.second / 2;
}
if (cnt < (s.size() / 2)) {
cout << "I'm Sorry Hansoo";
}
else {
for (auto c : p) {
for (int i = 0; i < c.second / 2; i++) {
res += c.first;
}
}
res1 = res;
reverse(res.begin(), res.end());
for (int i = 0; i < l; i++) {
res1 += arr[i];
}
res1 += res;
cout << res1;
#include <iostream>
#include <algorithm>
#include<string>
#include <string.h>
#include <map>
using namespace std;
string s,k,res,res1;
int cnt,l;
map<string, int> p;
string arr[26];
int main() {
cin >> s;
for (int i = 0; i < s.size(); i++) {
k = s[i];
p[k] += 1;
}
for (auto c : p) {
if (c.second % 2==1) {
arr[l] = c.first;
l++;
}
cnt +=c.second / 2;
}
if (cnt < (s.size() / 2)) {
cout << "I'm Sorry Hansoo";
}
else {
for (auto c : p) {
for (int i = 0; i < c.second / 2; i++) {
res += c.first;
}
}
res1 = res;
reverse(res.begin(), res.end());
for (int i = 0; i < l; i++) {
res1 += arr[i];
}
res1 += res;
cout << res1;
}
}