https://www.acmicpc.net/problem/1213
(입력받기)
(반복문(단어 크기만큼))
ord 함수
특정한 문자를 아스키 코드 값으로 바꿔주는 함수이다.
ex) ord('A') = 65
chr 함수
아스키 코드 값을 해당하는 문자로 바꿔주는 함수이다.
ex) chr(65) = 'A'
(반복문(알파벳 총 개수만큼(26)))
(최종 출력)
s = input()
s = sorted(s)
cnt = [0] * 26
odd = 0
str_odd = ''
alp = ''
for i in s:
cnt[ord(i)-65] += 1
for i in range(26):
if cnt[i] % 2 == 1:
odd += 1
str_odd += chr(i+65)
alp += chr(i+65) * (cnt[i] // 2)
if odd > 1:
print('I\'m Sorry Hansoo')
else:
print(alp + str_odd + alp[::-1])
(+ 2024.02.19 추가)
from collections import Counter
str = list(input())
str.sort()
cnt = Counter(str)
odd = 0
ans = ''
for i in cnt:
if cnt[i] % 2 != 0:
odd += 1
odd_char = i
for _ in range(cnt[i] // 2):
ans += i
if odd > 1:
print("I'm Sorry Hansoo")
elif odd == 0:
print(ans + ans[::-1])
else:
print(ans + odd_char + ans[::-1])
Counter 메서드 충격적으로다가 편하네 ,,
str을 Counter로 출력하면 입력값이 ABACABA일 때,
Counter({'A': 4, 'B': 2, 'C': 1})
이렇게 소팅해서 나온다