알고리즘 문제풀이

팰린드롬 만들기[백준 1213]

wiojfe 2024. 5. 18. 23:22

https://www.acmicpc.net/problem/1213

 

from collections import Counter

# 입력 문자열을 리스트로 변환
string = list(input().rstrip())
# 문자열 정렬
string.sort()

# 문자별 개수를 세기
counter = Counter(string)

# 팰린드롬 생성을 위한 준비
front_part = []  # 팰린드롬의 앞부분
middle_part = []  # 팰린드롬 중앙의 문자 (홀수 개인 문자)
for char, count in counter.items():
    if count % 2 == 1:
        middle_part.append(char)
    front_part.extend([char] * (count // 2))

# 팰린드롬을 만들 수 없는 조건 확인
if len(middle_part) > 1:
    print("I'm Sorry Hansoo")
else:
    # 팰린드롬 생성
    palindrome = front_part + middle_part + front_part[::-1]
    print(''.join(palindrome))