© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 1371 - 가장 많은 글자

2024-04-24
BOJ
브론즈 II
javascript
원본 문제 보기
구현
문자열

문제

BOJ 1371 - 가장 많은 글자

입력된 텍스트에서 가장 많이 등장하는 알파벳을 모두 사전순으로 출력하라.

입력

여러 줄에 걸쳐 알파벳 소문자와 공백으로 이루어진 텍스트가 주어진다.

출력

가장 많이 등장하는 알파벳을 사전순으로 출력한다.

예제

입력출력
abcabc

풀이

알파벳 빈도를 카운팅하여 최대 빈도인 글자들을 사전순으로 출력한다.

  1. 전체 텍스트에서 공백을 제거하고 각 알파벳의 빈도를 센다
  2. 최대 빈도를 가진 알파벳을 찾는다
  3. 같은 빈도의 알파벳을 모두 모아 사전순으로 정렬하여 출력한다

핵심 아이디어: 26개 알파벳만 카운팅하면 되므로 O(1) 공간에 해결 가능하다.

코드

const solution = (input) => {
  const cnt = input.join("").split(" ").join("").split("").reduce((acc, cur) => {
    if (acc[cur]) acc[cur]++; else acc[cur] = 1; return acc;
  }, {});
  const maxValue = Object.keys(cnt).reduce((a, b) => (cnt[a] > cnt[b] ? a : b));
  const arr = [];
  for (let V in cnt) { if (cnt[V] === cnt[maxValue]) arr.push(V); }
  return arr.sort().join("");
};
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
console.log(solution(input));

복잡도

  • 시간: O(N)
  • 공간: O(1)