DHistory

[Baekjoon] Greedy - 1213 팰린드롬 만들기 본문

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))

 

채점 결과