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)
'알고리즘' 카테고리의 다른 글
C++ (0) | 2022.10.28 |
---|---|
[백준 알고리즘] 5502번 팰린드롬 만들기. 파이썬(python) (0) | 2022.10.26 |
[백준 알고리즘] 16170번 오늘의 날짜는?. 파이썬(python)/timedelta (0) | 2022.10.25 |
[백준 알고리즘] 2948번 2009년. 파이썬(python/요일 계산하기 (0) | 2022.10.25 |
비밀번호 설정/ re모듈 사용/ 정규표현 (0) | 2022.10.22 |