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

[해시] -팰린드롬 확인

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

팰린드롬 확인

소문자로만 이루어진 문자열이 주어지면 해당 문자열의 문자들의 순서를 재배치해서 팰린드롬 (회문)을 만들 수 있는지를 확인하고 싶습니다. 만약 "abbac"같은 문자열은 문자들을 "abcba" 로 재 배치하면 팰린드롬을 만들 수 있습니다.

매개변수 s에 문자열이 주어지면 해당 문자열이 재 배치를 통해 팰린드롬을 만들 수 있으면 True를 못 만들면 False를 반환하는 프로그램을 작성하세요.

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

 

나의코드

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

    return False if cnt > 1 else True    
                      
print(solution("abacbaa"))
print(solution("abaaceeffkckbaa"))
print(solution("abcabbcc"))
print(solution("sgsgsgabaaaecececekefefkccckbsgaaffsgsg"))
print(solution("aabcefagcefbcabbcc"))

팰린드롬이 만들어 지는 지 확인하지 위해 해당 '문자키에 해당하는 값이 홀수인 경우는 최대 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 odd <= 1     
                      
print(solution("abacbaa"))
print(solution("abaaceeffkckbaa"))
print(solution("abcabbcc"))
print(solution("sgsgsgabaaaecececekefefkccckbsgaaffsgsg"))
print(solution("aabcefagcefbcabbcc"))