목차
팰린드롬 길이
문자열이 주어지면 해당 문자열의 문자들을 가지고 만들 수 있는 최대길이 팰린드롬을 만들고 그 길이를 구하세요.
문자열은 소문자로만 이루어져 있습니다.
만약 "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"))
'코딩테스트[파이썬] > 입문자를 위한 코딩테스트 핵심' 카테고리의 다른 글
[시물레이션] -웅덩이 (0) | 2024.01.22 |
---|---|
[해시] - 두 수의 합 (0) | 2024.01.22 |
[해시] -팰린드롬 확인 (0) | 2024.01.22 |
[해시] -자기분열수 (0) | 2024.01.22 |
[해시] -빈도수2 [Counter] (0) | 2024.01.22 |