풀이


문자열을 입력받고 팰린드롬이 가능할 경우 팰린드롬 형태로 출력하는 문제이다.

주어진 문자열을 순회하면서 각 알파벳의 등장횟수를 alp 리스트에 저장한다.

등장횟수가 홀수인 알파벳이 2개 이상일 경우 팰린드롬이 불가능하기 때문에 가능여부를 판단하기 위한 isTrue 변수를 선언해준다.

alp 리스트를 순회하면서 만약 등장횟수가 짝수인 알파벳들은 모두 srt 변수에 절반만큼을 추가해주고 등장횟수가 홀수인 알파벳이 있을 경우 해당 알파벳을 mid 변수에 추가해준다.

만약 isTrue 변수가 2 이상일 경우 팰린드롬이 불가능하기 때문에 “I’m Sorry Hansoo” 를 출력해준다.

정상적인 팰린드롬일 경우 srt 변수와 mid 변수를 더해준 뒤 srt 변수를 거꾸로 더해준 후 출력한다.

소스코드


# 팰린드롬 만들기
import sys
input = sys.stdin.readline
 
alp = [0]*26
string = input().rstrip()
 
for s in string:
    alp[ord(s)-65] += 1
 
isTrue = 0
srt = ""
mid = ""
 
for i in range(26):
    if alp[i]%2 == 1:
        isTrue += 1
        mid += chr(i+65)
    srt += chr(i+65) * (alp[i]//2)
 
if isTrue >= 2:
    print("I'm Sorry Hansoo")
else:
    print(srt + mid + srt[::-1])

References