팰린드롬 길이 구하기

GGob2._.·2023년 6월 27일
0

algorithm

목록 보기
28/55

문제설명

팰린드롬이란, 앞에서 뒤로 읽든 뒤에서 앞으로 읽든 동일하게 읽히는 문자를 의미한다.

주어진 문자열을 재구성하여 팰린드롬으로 만들 때, 길이를 구하자.

접근방식

  • 문자열에 포함된 알파벳의 수가 홀수인 경우 대칭형태로 구성할 수 없기 때문에 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
profile
소통을 잘하는 개발자가 되고 싶습니다.

0개의 댓글