코딩테스트/Python
[Python] 백준 #1213 - 팰린드롬 만들기
yo~og
2022. 5. 15. 00:09
문제
https://www.acmicpc.net/problem/1213
1213번: 팰린드롬 만들기
첫째 줄에 문제의 정답을 출력한다. 만약 불가능할 때는 "I'm Sorry Hansoo"를 출력한다. 정답이 여러 개일 경우에는 사전순으로 앞서는 것을 출력한다.
www.acmicpc.net
풀이
from collections import Counter
ss = list(input())
dic = Counter(ss) # 개수 세주기
cnt=1
answer=[]
one = ''
for d in dic:
for i in range(dic[d]//2): # 반만큼 answer에 더하기
answer.append(d)
if dic[d]%2!=0: # 홀수일경우
if cnt==2: # 홀수인게 한개가 넘을경우
print("I'm Sorry Hansoo") # 실패
break
else:
cnt+=1 # 홀수가 하나일경우
one=d # 홀수 값 저장
else:
answer.sort() # 사전순으로 정렬해주기
print('%s%s%s'%(''.join(answer),one,''.join(answer[::-1]))) # 정렬된값 + 홀수 값 + 정렬 역순 값
순열을 구해서 찾으니 시간초과가 났다.
사전순으로 정렬된 값 + 한개만 있는 문자열 + 사전순으로 정렬된 값의 역순
을 구해주었다.