{}연습장
대시보드학습스킬 경로문제모의고사라이브 코테복습데이터
문제 목록〉해시〉대칭 목걸이 다듬기← 이전다음 →
#086 · 해시쉬움해시 / 카운팅

대칭 목걸이 다듬기

문제

알파벳이 하나씩 새겨진 구슬을 꿴 목걸이가 문자열 beads로 주어집니다. 공방에서는 구슬을 자유롭게 다시 배열할 수 있지만, 새 구슬을 추가할 수는 없습니다.

목걸이가 좌우 대칭(회문)이 되도록 재배열하려고 합니다. 그대로는 불가능할 수 있으므로 구슬을 몇 개 빼내야 할 수도 있습니다.

대칭 배열이 가능해지기 위해 빼내야 하는 구슬의 최소 개수를 반환하는 solution(beads)를 구현하세요. 빼지 않아도 되면 0을 반환합니다.

예시

beads 반환값 설명
"banana" 1 b 1개, a 3개, n 2개 — 홀수 개인 종류가 둘이라 하나를 빼야 함
"level" 0 이미 대칭 배열이 가능
"kimchi" 3 k·m·c·h가 각 1개 — 셋을 빼면 "ii" 사이에 한 글자를 둘 수 있음
"seoulseoul" 0 모든 종류가 짝수 개

제약 조건

  • 1 ≤ beads.length ≤ 100,000
  • beads는 영문 소문자로만 이루어져 있습니다

시간 복잡도 목표: O(N)

테스트 케이스

예시 1: 홀수 종류 b·a 둘
입력: beads = "banana"
출력: 1
예시 2: 이미 대칭 가능
입력: beads = "level"
출력: 0
예시 3: 홀수 종류 넷
입력: beads = "kimchi"
출력: 3
예시 4: 모두 짝수 개
입력: beads = "seoulseoul"
출력: 0
구슬 하나뿐
입력: beads = "z"
출력: 0
전부 서로 다른 구슬
입력: beads = "abcdef"
출력: 5
g 3개 o 3개
입력: beads = "gogogo"
출력: 1
홀수 종류 e·k·b·i 넷
입력: beads = "tteokbokki"
출력: 3
solution.ts
에디터 로딩 중…

▶ 실행은 기록 없이 채점만, 제출은 결과가 진행률·오답노트에 기록됩니다.