alpyrithm_알파이리즘

[알고리즘][Python] 백준(BOJ) 1213 팰린드롬 만들기_파이썬 본문

Algorithm/백준 알고리즘_Python

[알고리즘][Python] 백준(BOJ) 1213 팰린드롬 만들기_파이썬

알파이 2020. 9. 17. 08:45

 

1213 팰린드롬 만들기    https://www.acmicpc.net/problem/1213

 

1213번: 팰린드롬 만들기

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

www.acmicpc.net

 

 

 

 

 

문제 풀기 전 공부할 것 : 구현

 

 

 

 

 

 

 

풀이

<내용>

  • 영어 이름을 names에 입력받고 name_cnt에 영어 이름에 포함된 알파벳 대문자 수를 저장한다.
  • for문을 돌면서 홀수인 알파벳 대문자가 몇 개 있는지 확인하고 홀수 알파벳과 짝수 알파벳을 저장한다.
  • 홀수가 2개 이상이면 팰린드롬을 만들 수 없기 때문에 "I'm Sorry Hansoo"를 출력한다.
  • 홀수가 1개 이하라면 짝수 알파벳 + 홀수 알파벳 + 짝수 알파벳 역순을 출력한다.

 

 

 

<코드>

names = input()
name_cnt = [0 for _ in range(26)]
for name in names:
    name_cnt[ord(name)-65] += 1
    
odd = 0
odd_alpha = ''
alpha = ''
for i in range(26):
    if name_cnt[i] % 2 == 1:
        odd += 1
        odd_alpha += chr(i+65)
    alpha += chr(i+65) * (name_cnt[i] // 2)
        
if odd > 1:
    print("I'm Sorry Hansoo")
else:
    print(alpha+odd_alpha+alpha[::-1])

 

 

 

 

 

 

 

반응형
Comments