본문 바로가기

알고리즘 문제풀이

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

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

'알고리즘 문제풀이' 카테고리의 다른 글

수열의 합[백준 1024]  (0) 2024.05.19
대지[백준 9063]  (0) 2024.05.19
부분합[백준 1806]  (0) 2024.05.17
경고[백준 3029]  (0) 2024.05.14
토너먼트[백준 1057]  (0) 2024.05.13