반응형
https://www.acmicpc.net/problem/1213
1213번: 팰린드롬 만들기
첫째 줄에 문제의 정답을 출력한다. 만약 불가능할 때는 "I'm Sorry Hansoo"를 출력한다. 정답이 여러 개일 경우에는 사전순으로 앞서는 것을 출력한다.
www.acmicpc.net
str = input()
alphabet = [0] * 26
for _ in str:
alphabet[ord(_) - ord("A")] += 1
EVEN_COUNT = 0
for i in range(0, len(alphabet)):
if alphabet[i] % 2 != 0:
EVEN_COUNT += 1
if len(str) % 2 != 0 and EVEN_COUNT != 1 or len(str) % 2 == 0 and EVEN_COUNT != 0:
print("I'm Sorry Hansoo")
exit()
ANSWER = ""
EVEN_ALPHA = ""
for _ in range(len(alphabet) - 1, -1, -1):
while alphabet[_] != 0:
if alphabet[_] == 1:
EVEN_ALPHA = chr(_ + ord("A"))
alphabet[_] -= 1
break
ANSWER = chr(_ + ord("A")) + ANSWER + chr(_ + ord("A"))
alphabet[_] -= 2
if EVEN_ALPHA != "":
A = ANSWER[0 : len(ANSWER) // 2]
B = ANSWER[len(ANSWER) // 2 : len(ANSWER)]
ANSWER = (
ANSWER[0 : len(ANSWER) // 2]
+ EVEN_ALPHA
+ ANSWER[len(ANSWER) // 2 : len(ANSWER)]
)
print(ANSWER)
'알고리즘' 카테고리의 다른 글
17091번 단어 시계 (0) | 2024.05.06 |
---|---|
14468번 소가 길을 건너간 이유2 (0) | 2024.05.05 |
1212번 8진수 2진수 (0) | 2023.07.07 |
1173번 운동 (0) | 2023.07.07 |
1138번 한 줄로 서기 (0) | 2023.07.07 |