CS/백준 BOJ

[C++] 백준 10808번 - 알파벳 개수

seomoon 2020. 7. 2. 01:21

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

 

10808번: 알파벳 개수

단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다.

www.acmicpc.net

 

#코드

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

int alph[26];

int    main(void)
{
    string s;
    cin >> s;
    for (auto c : s)
        alph[c - 'a']++;
    for (auto n : alph)
        cout << n << ' ';
}

 

#설명

알파벳을 저장할 배열을 전역에 선언합니다. (배열을 전역에 선언하면 배열의 원소들이 자동으로 0으로 초기화됩니다.)

알파벳 소문자 a ~ z 까지 총 26개를 저장하기 위해 크기는 26으로 선언했습니다.

 

for문에서 string (char 타입 배열)의 원소들, 즉 알파벳에 하나씩 접근하면서 

알파벳의 순서에 해당하는 인덱스의 값을 증가시켜줍니다. 

( 알파벳 소문자는 아스키코드 상에서 97 ~ 122이기 때문에 97(='a')을 빼서 0 ~ 26 사이의 숫자로 바꿔주었습니다. )

 

그리고 나서 배열 alpha의 원소들을 공백으로 구분해 하나씩 출력해주면 됩니다.