팰린드롬이란, 앞에서 뒤로 읽든 뒤에서 앞으로 읽든 동일하게 읽히는 문자를 의미한다.
주어진 문자열을 재구성하여 팰린드롬으로 만들 때, 길이를 구하자.
- 문자열에 포함된 알파벳의 수가 홀수인 경우 대칭형태로 구성할 수 없기 때문에 1개는 버려야 한다.
- 단, 1개의 홀수 문자는 가운데에 1개, 양측에 각 1개씩을 넣어 사용할 수 있기에, 1개 문자에는 예외를 적용할 수 있다.
- 짝수 문자의 경우 양측에 대칭되게 재구성하면 된다.
- 주어진 문자열에서 홀수 문자의 개수를 추출한다음, 전체 문장 길이에서 홀수 문자 개수만큼을 빼고, 예외로 1개를 적용하면 된다.
- 문자의 빈도수는
Counter
를 이용해 구한다.
from collections import Counter
def solution(s):
answer = 0
num_dict = Counter(s)
num = 0
for key in num_dict:
if num_dict[key] % 2 != 0:
num += 1
if not num:
answer = len(s)
else:
answer = len(s) - num + 1
return answer