목차
팰린드롬 확인
소문자로만 이루어진 문자열이 주어지면 해당 문자열의 문자들의 순서를 재배치해서 팰린드롬 (회문)을 만들 수 있는지를 확인하고 싶습니다. 만약 "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"))
'코딩테스트[파이썬] > 입문자를 위한 코딩테스트 핵심' 카테고리의 다른 글
[해시] - 두 수의 합 (0) | 2024.01.22 |
---|---|
[해시] - 팰린드롬의 길이 (0) | 2024.01.22 |
[해시] -자기분열수 (0) | 2024.01.22 |
[해시] -빈도수2 [Counter] (0) | 2024.01.22 |
[해시] -빈수도1 (0) | 2024.01.22 |