Computer Science/Algorithm
[Baekjoon] Greedy - 1213 팰린드롬 만들기
ddu0422
2023. 8. 24. 14:01
문제
1213번: 팰린드롬 만들기
첫째 줄에 문제의 정답을 출력한다. 만약 불가능할 때는 "I'm Sorry Hansoo"를 출력한다. 정답이 여러 개일 경우에는 사전순으로 앞서는 것을 출력한다.
www.acmicpc.net
풀이
"""
팰린드롬: 대칭 문자열
1. 전부 짝수인 경우
2. 홀수 1개 / 나머지 짝수인 경우
<=> 홀수 2개인 경우
"""
text = input()
def solution(text):
alpha = [0] * 26
for value in text:
alpha[ord(value) - ord('A')] += 1
if len(list(filter(lambda x: x & 1, alpha))) > 1:
return "I'm Sorry Hansoo"
answer = ''
middle = ''
for index, value in enumerate(alpha):
character = chr(index + ord('A'))
answer += character * (value // 2)
if value & 1:
middle = character
return answer + middle + answer[::-1]
print(solution(text))