알고리즘
[백준 알고리즘] 1213번 팰린드롬 만들기. 파이썬(python)
삶은겨란
2022. 10. 26. 17:22
https://www.acmicpc.net/problem/1213
1213번: 팰린드롬 만들기
첫째 줄에 문제의 정답을 출력한다. 만약 불가능할 때는 "I'm Sorry Hansoo"를 출력한다. 정답이 여러 개일 경우에는 사전순으로 앞서는 것을 출력한다.
www.acmicpc.net
- 각 알파벳이 몇개인지 카운트
- 홀수개는 무조건 1개만 있어야 한다
- 사전순이므로 (앞에서 부터 //2 개수만큼 출력)+(홀수개였던거 출력)+(뒤에서부터 //2개수만큼 출력)
import sys
input=sys.stdin.readline
s=input().strip()
alphas=[0 for _ in range(27)]
odds=0
oddidx=-1
answer=''
for i in s:
alphas[ord(i)-65]+=1
for i in range(len(alphas)):
if alphas[i]%2==1:
odds+=1
oddidx=i
if odds==2: # 홀수의 개수가 2 이상이면
print("I'm Sorry Hansoo")
exit()
alphas[oddidx]-=1 # 홀수 알파벳 하나 제외
for i in range(len(alphas)):
for _ in range(alphas[i]//2):
answer+=chr(i+65)
if oddidx!=-1:
answer+=chr(oddidx+65)
for i in range(len(alphas)-1,-1,-1):
for _ in range(alphas[i]//2):
answer+=chr(i+65)
print(answer)