쉬움 0명 해결 정답률 0%

문자 빈도수

각 문자가 몇 번 나타나는지 세어보세요.

배우게 될 내용

  • 빈도표 만들기
  • 딕셔너리 항목을 안전하게 갱신하기
  • 요구된 순서로 결과 반환하기

문제

원문 보기 (영어)

text에서 공백을 제외한 모든 문자의 개수를 세어주세요. 각 서로 다른 문자를 한 번씩만 "문자:개수" 형식으로 출력하며, 문자 코드 순서(대문자가 소문자보다 먼저 옴)로 정렬하세요.

character_frequency(text)를 구현하세요.

입력

text: 개수를 셀 텍스트 (ASCII 문자).

출력

"문자:개수" 항목의 리스트를 반환하세요.

제약 조건

0 ≤ 길이 ≤ 10,000

예시

예시 1
입력:
text = "hello"

예상 출력:
expected = ["e:1", "h:1", "l:2", "o:1"]
입력:
std::string text = "hello";

예상 출력:
std::vector<std::string> expected = {"e:1", "h:1", "l:2", "o:1"};
입력:
string text = "hello";

예상 출력:
string[] expected = new string[] {"e:1", "h:1", "l:2", "o:1"};

설명

e:1, h:1, l:2, o:1 문자 코드 순으로 정렬: ["e:1", "h:1", "l:2", "o:1"].

예시 2
입력:
text = "a a A"

예상 출력:
expected = ["A:1", "a:2"]
입력:
std::string text = "a a A";

예상 출력:
std::vector<std::string> expected = {"A:1", "a:2"};
입력:
string text = "a a A";

예상 출력:
string[] expected = new string[] {"A:1", "a:2"};

설명

공백은 건너뜁니다; "A"가 "a"보다 먼저 정렬됩니다: ["A:1", "a:2"].

접근 방법

먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.

힌트 1

공백은 건너뛰되, 다른 모든 ASCII 문자는 그대로 세세요.

힌트 2

빈도표에 카운트를 누적한 뒤, 각 문자는 한 번만 출력하세요.

힌트 3

문자 코드 순으로 정렬하면 대문자와 소문자 순서가 ASCII에 맞게 자연스럽습니다.

예상 복잡도

시간 O(n + m log m), 추가 공간 O(m)

참고 자료

이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.

다른 사람의 풀이 보기

커뮤니티 솔루션

아직 공개된 풀이가 없습니다. 문제를 풀고 첫 풀이를 공유하세요.