코딩테스트[파이썬]/입문자를 위한 코딩테스트 핵심

[해시] - 팰린드롬의 길이

softmoca__ 2024. 1. 22. 14:41
목차

팰린드롬 길이

문자열이 주어지면 해당 문자열의 문자들을 가지고 만들 수 있는 최대길이 팰린드롬을 만들고 그 길이를 구하세요.

문자열은 소문자로만 이루어져 있습니다.
만약 "abcbbbccaaeee" 가 주어진다면 만들 수 있는 가장 긴 팰린드롬은 "ebbcaaacbbe"이고 답은 11입니다.

제한사항:
• s의 길이는 1,000을 넘지 않습니다.

 

 

나의 코드

from collections import Counter
def solution(s):
    answer = 0
    CC=Counter(s)
    cnt=0
    for x in CC:
        if CC[x]%2==1:
            cnt+=1
    if cnt >1:
        answer=len(s)-(cnt-1)
    else:
        answer=len(s)


    return answer
    
                
print(solution("abcbbbccaaeee"))
print(solution("aabbccddee"))
print(solution("fgfgabtetaaaetytceefcecekefefkccckbsgaafffg"))
print(solution("aabcefagcefbcabbcc"))
print(solution("abcbbbccaa"))

Counter를 사용해서 홀수개의 값을 가지는 키의 갯수를 1개 보다 많은지로 나누어 코드 작성

 

 

정답 코드

from collections import Counter
def solution(s):
    sH = Counter(s)
    odd = 0
    for key in sH:
        if sH[key] % 2 == 1:
            odd += 1

    return len(s) - odd + 1 if odd > 0 else len(s)
    
                   
print(solution("abcbbbccaaeee"))
print(solution("aabbccddee"))
print(solution("fgfgabtetaaaetytceefcecekefefkccckbsgaafffg"))
print(solution("aabcefagcefbcabbcc"))
print(solution("abcbbbccaa"))