
😎풀이
- 단어 빈도 저장
- 모든 빈도 순회
2-1. 빈도가 짝수라면 팰린드롬을 만들 수 있으므로 길이에 추가
2-2. 빈도가 홀수라면, 하나의 문자를 덜 쓰고 짝수개로 맞출 수 있으므로 -1만큼 추가하고 홀수 단어가 있음을 표시
- 길이를 반환하되, 홀수개의 단어가 있었다면, 한 문자까지는 중앙에 배치하여 팰린드롬을 만들 수 있으므로 + 1 하여
length
반환
function longestPalindrome(s: string): number {
const frequent = new Map<string, number>()
for(const char of s) frequent.set(char, (frequent.get(char) ?? 0) + 1)
let length = 0
let foundOdd = false
for(const [_, value] of [...frequent]) {
if((value & 1) === 1) {
length += value - 1
foundOdd = true
}
else length += value
}
return length + (foundOdd ? 1 : 0)
};