문제
https://www.acmicpc.net/problem/1213
풀이
팰린드롬 문자열을 구성하려면 문자중 단 하나만 홀수개 사용할 수 있으며 정 가운데 입력된다,
이 외의 다른 문자들은 짝수개 존재해야 팰린드롬 문자열로 구성이 가능하다.
문자별 등장 횟수를 딕셔너리로 저장하고, 홀수번 등장하는 문자를 기록하고
알파벳 순서대로 정렬하여 짝수번 등장하는 문자의 절반을 출력, 홀수번 등장하는 문자 출력, 짝수번 등장하는 문자의 절반을 뒤집어 출력하여 회문을 완성한다.
이때 홀수번 등장하는 문자가 1개를 초과하면 팰린드롬이 불가하므로 한수에게 사과를 전하자.
정답 코드
from collections import defaultdict
hansooEngName = input()
alphaDict = defaultdict(int)
for letter in hansooEngName:
alphaDict[letter] += 1
alphaList = list(zip(alphaDict.keys(), alphaDict.values()))
middle = ''
for element in alphaList:
if element[1] % 2 != 0:
middle += element[0]
alphaList.sort()
answer = ''
if len(middle) <= 1:
for element in alphaList:
answer += element[0] * (element[1]//2)
print(f"{answer}{middle}{answer[::-1]}")
else:
print("I'm Sorry Hansoo")
'알고리즘 > 백준' 카테고리의 다른 글
[백준/Python] 1027번. 고층 건물 (0) | 2024.11.17 |
---|---|
[백준/Python] 9935번. 문자열 폭발 (0) | 2024.11.15 |
[백준/Python] 17413번. 단어 뒤집기 2 (0) | 2024.11.15 |
[백준/Python] 4659번. 비밀번호 발음하기 (0) | 2024.11.15 |
[백준/Python] 11279번. 최대 힙 (0) | 2024.11.15 |