Map, Sort를 이용해 해결했다
각 문자별 나타나는 횟수를 기록하고 사전 순으로 정렬하여 정답 문자열을 생성하였다
핵심 예외처리!
갯수가 홀수 인 문자가 존재하는 경우
해당 문자가 하나인 경우
해당 문자가 하나를 초과하는 경우
from collections import Counter
from functools import cmp_to_key
# 짝수 개수만을 가진 딕셔너리(튜플)을 정렬합니다
def dict_sort(x1, x2):
# 첫 인덱스의 값은 문자이므로 해당 값을 기준으로 정렬합니다
if x1[0] > x2[0]:
return 1
else:
return -1
src = Counter(list(input()))
middle = ''
middle_key = 0
possible_counter = 0
for key, value in src.items():
# 홀수 개수 출현 문자를 검사합니다
if value % 2 != 0:
middle = key
middle_key = value
src[key] -= 1
possible_counter += 1
# 홀수 개수 출현 문자의 개수가 하나를 초과한다면 팰린드롬이 불가합니다
if possible_counter > 1:
print('I\'m Sorry Hansoo')
else:
src = sorted(src.items(), key=cmp_to_key(dict_sort))
answer = ''
for key, value in src:
if value % 2 == 0:
answer += key * (value // 2)
answer = answer + middle + answer[::-1]
print(answer)