# 생각

문자열을 입력받고, 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

+ Recent posts