-문제: https://www.acmicpc.net/problem/1213

 

1213번: 팰린드롬 만들기

첫째 줄에 문제의 정답을 출력한다. 만약 불가능할 때는 "I'm Sorry Hansoo"를 출력한다. 정답이 여러 개일 경우에는 사전순으로 앞서는 것을 출력한다.

www.acmicpc.net

 

-정답풀이:

알파벳에 해당하는 인덱스는 ord(name)-65하면 a가 0부터 시작한다.

odd_alpha는 갯수가 홀수개인 알파벳들 모아놓은 것 

인덱스+65를 chr한 값을 odd_alpha(문자열)에 더한다

alpha에는 갯수가 짝수개인 알파벳들이 들어가므로 인덱스+65인 문자값을 전체갯수//2만큼 더해주면 된다

14,15번은 내가 생각했던 부분

18번은 odd인 것들은 가운데 놔두고, alpha에 해당하는 문자들을 왼쪽에서는 그대로 나열하고, 오른쪽 alpha는 거꾸로 출력해준다

names=input()
name_cnt=[0 for _ in range(26)]
for name in names:
    name_cnt[ord(name)-65]+=1
cnt=0
odd_alpha=''
alpha=''
for i in range(26):
    if name_cnt[i]%2 ==1:
        cnt+=1
        odd_alpha +=chr(i+65)
    alpha +=chr(i+65)*(name_cnt[i]//2)
#알파벳 갯수 홀수인 수가 2개 이상이면 팰린드롬 못 만듦    
if cnt >=2:
    print("I'm Sorry Hansoo")
#갯수 홀수인 수 1개이하면 팰린드롬 만들 수 있음
else:
    print(alpha+odd_alpha+alpha[::-1])

-틀린풀이:

알파벳 개수가 홀수인 수가 2개 이상이면 팰린드롬이 안된다는 아이디어는 맞았는데 구현이 어려워서 팰린드롬 출력을 못했다

 

+ Recent posts