[PS] 백준 10808 알파벳 개수

박상혁·2026년 5월 20일

PS

목록 보기
2/95

이번에는 백준 10808번 알파벳 개수 문제를 풀어보았습니다.

이 문제는 문자열에서 각 알파벳이 몇 번 등장했는지를 세는 문제입니다.

문제 설명

알파벳 소문자로만 이루어진 단어 S가 주어집니다.

이때 a부터 z까지 각 알파벳이 몇 번 포함되어 있는지 공백으로 구분해 출력하면 됩니다.

예를 들어 문자열에 a가 2번, b가 0번, c가 1번 들어 있다면

그 개수를 순서대로 출력하는 방식입니다.

풀이 아이디어

알파벳은 소문자 a부터 z까지 총 26개로 고정되어 있습니다.

따라서 크기가 26인 배열을 하나 만들어두고, 문자열을 순회하면서 각 문자의 위치에 맞는 값을 증가시키면 됩니다.

문자를 숫자 인덱스로 바꾸는 방식은 다음과 같습니다.

  • 'a' - 'a' → 0
  • 'b' - 'a' → 1
  • 'c' - 'a' → 2

이 원리를 이용하면 배열의 각 칸이 해당 알파벳의 등장 횟수를 저장하게 됩니다.

코드

#include <bits/stdc++.h>
using namespace std;

string s;
int alphabet[26] = {0};

void solve() {
    for (char c : s) {
        alphabet[c - 'a']++;
    }
}

int main() {
    cin >> s;

    solve();

    for (int i = 0; i < 26; i++) {
        cout << alphabet[i] << " ";
    }
}

풀이 흐름

  1. 문자열 s를 입력받는다.
  2. 크기가 26인 배열 alphabet을 준비한다.
  3. 문자열의 각 문자를 순회하면서 c - 'a' 위치의 값을 1 증가시킨다.
  4. 마지막에 배열의 0번부터 25번까지 순서대로 출력한다.

정리

이 문제에서는 배열을 사용해 각 알파벳의 개수를 셌습니다.

문자열에서 어떤 값의 등장 횟수를 세는 문제는 보통 다음 두 방식으로 접근할 수 있습니다.

  • Array
  • Map

이번 문제처럼 대상이 a부터 z까지처럼 범위가 고정되어 있고 인덱스로 바로 바꿀 수 있는 경우에는 배열이 더 간단합니다.

반대로 문자열이나 숫자 범위가 일정하지 않거나, 값이 띄엄띄엄 등장하는 경우에는 Map을 사용하는 방식도 생각할 수 있습니다.

profile
엉덩이로 성장하는 개발자

0개의 댓글