https://www.acmicpc.net/problem/1213
#include <bits/stdc++.h>
using namespace std;
int main()
{
string input;
cin >> input;
int arr[26] = { 0, };
int odd_count = 0;
int odd_index;
for (int i = 0; i < input.size(); i++)
{
arr[input[i] - 'A']++;
}
for (int i = 0; i < 26; i++)
{
if (arr[i] % 2 != 0)
{
odd_count++;
odd_index = i;
}
}
if (odd_count > 1)
{
cout << "I'm Sorry Hansoo";
return 0;
}
else
{
string ans = "";
string temp = "";
for (int i = 0; i < 26; i++)
{
if (arr[i] > 0)
{
for (int j = 0; j < (arr[i] / 2); j++)
ans += (char)('A' + i);
}
}
temp = ans;
reverse(temp.begin(), temp.end());
if (odd_count == 1)
{
cout << ans;
cout << (char)(odd_index + 'A');
cout << temp;
}
else
{
cout << ans << temp;
}
}
}
팰린드롬이 어떻게 되는지 관찰해본 결과
홀수인 알파벳이 두개 이상 있으면 팰린드롬이 성립하지 않는다.
그 경우를 예외처리해주고
나머지의 경우는 구현.
'백준 문제풀이 > 실버3' 카테고리의 다른 글
백준 1388 - 바닥 장식 (0) | 2022.08.04 |
---|---|
백준 11659번 - 구간 합 구하기 4 (0) | 2022.08.04 |
백준 14425번 - 문자열 집합 (0) | 2022.06.08 |
백준 2108번 - 통계학 (0) | 2022.06.01 |
백준 1929번 - 소수 구하기 (0) | 2022.03.02 |