영소문자로 이루어진 문자열 s가 주어져요. 가장 많이 등장한 문자를 반환해요.
가장 많이 등장한 문자가 여럿이면 사전순으로 앞선 문자를 반환해요.
빈도수 세기는 해시의 절반이에요. 먼저 { 문자: 개수 } 를 만들고, 그 다음 만들어진 맵에서 최댓값을 뽑는 두 단계로 나누는 게 요령이에요. 한 번에 하려 들면 동점 처리에서 꼬여요.
예시
예시 1
예시 2
예시 3
제한 사항
- 1 ≤ s.length ≤ 100,000
- s 는 영소문자로만 이루어져요.
맵을 순회하며 최댓값을 찾을 때 순회 순서에 기대지 마세요. 개수가 더 클 때만 갱신하고, 같을 때는 문자를 비교해 더 앞선 쪽을 남기면 순서와 무관하게 답이 정해져요. 영소문자뿐이니까 길이 26 배열로도 돼요 — 그러면 순서가 곧 사전순이에요.
javascriptCopy codefunction mostFrequentChar(s) {const count = new Map();for (const c of s) count.set(c, (count.get(c) ?? 0) + 1);let best = null;let bestCount = 0;for (const [c, n] of count) {if (n > bestCount || (n === bestCount && c < best)) {best = c;bestCount = n;}}return best;}
예시 테스트만 실행 (Cmd/Ctrl+Enter)
숨김 테스트까지 채점 (Cmd/Ctrl+Shift+Enter)
에디터를 불러오고 있어요…
코드를 작성하고Ctrl↵를 눌러 예시 테스트를 확인해 보세요.