# 생각
문자열을 입력받고, a to z 각각에 대해 글자가 몇번 등장하는지 확인한다
하지만 꼭 a 부터 z까지 26번 반복해서 확인할 필요는 없다
각 문자의 등장횟수를 저장하는 배열을 선언하여 처리하게 되면
a부터 z까지 연속으로 붙어 있으므로 a는 0 z는 25로 만들어 주면 된다
그렇게되면 문자열을 입력받은 후 등장횟수를 카운트 하여 저장해주고
횟수가 저장된 배열만 출력해주면 해결이 가능하다
# 전체 코드
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
string s;
cin >> s;
// O(N^2)
/*for (char a = 'a'; a <= 'z'; a++)
{
int count = 0;
for (auto c:s)
{
if (a == c)
{
count++;
}
}
cout << count << ' ';
}*/
// O(N)
int freq[26] = {};
for (auto c : s)
{
freq[c - 'a']++;
}
for (int i = 0; i < 26; i++)
{
cout << freq[i] << ' ';
}
}
https://www.acmicpc.net/problem/10808
10808번: 알파벳 개수
단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다.
www.acmicpc.net
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 11328_Strfry with cpp (0) | 2022.02.17 |
---|---|
[BOJ] 3273_두 수의 합 with cpp (0) | 2022.02.17 |
[BOJ] 1799_비숍 with cpp (0) | 2022.02.15 |
[BOJ] 18809_Gaaaaaaaaaarden with cpp (0) | 2022.02.14 |
[BOJ] 16987_계란으로 계란치기 with cpp (0) | 2022.02.10 |