[백준] 10808번 알파벳 개수

문제

https://www.acmicpc.net/problem/10808

10808: 알파벳의 수

단어의 a 수, b 수, … , 공백으로 구분된 z 수를 인쇄합니다.

www.acmicpc.net

문제는 주어진 문자열에서 각 문자가 몇 번 나오는지 세는 것입니다.

문제를 해결하다

  • 문제는 각 문자의 발생 횟수를 세어 해결할 수 있습니다.

  • 문자열은 루프를 통과하고 각 문자가 나타나는 횟수는 벡터에 저장됩니다.

  • 이때 알파벳은 아스키 코드 값으로 변환되어 계산된다.

    소문자 a는 아스키 코드 값이 97이므로 각 알파벳의 출현 횟수를 저장하기 위해 벡터의 인덱스를 계산할 때 (알파벳의 ASCII 코드 값 – 97)을 사용한다.

암호

#include <iostream>
#include <vector>
#include <string>

using namespace std;

// 각 알파벳이 몇 번 등장하는지 계산하는 함수
vector<int> countAlphabet(string s) {
    vector<int> alpha(26, 0);  // 알파벳의 개수만큼 0으로 초기화된 벡터 선언

    for (char ch : s) {
        alpha(ch - 'a')++;  // 해당 알파벳의 등장 횟수 증가
    }

    return alpha;
}

int main() {
    // 입력
    string s;
    cin >> s;

    // 연산
    vector<int> alpha = countAlphabet(s);  // 각 알파벳의 등장 횟수를 저장한 벡터 반환받음

    // 출력
    for (int i = 0; i < 26; i++) {
        cout << alpha(i) << ' ';
    }
    cout << '\n';

    return 0;
}

알파벳과 관련된 문제를 풀 때 ASCII 코드를 사용하십시오.