
오늘 강의에서 본 알고리즘 문제는 아주 간단한 문제가 나왔다. 물론.. 쉽다고 자만하면 안된다는 사실은 잊지말자. 먼저 알고리즘을 짜보자.
알고리즘
- 영어는 소문자만 받으니 a~z의 수인 26개의 배열을 만든다.
- 소문자만 있으니 배열에서 'a'를 빼면 0~25까지 나오는걸 알 수 있다.
- 2번에서 구한 인덱스를 배열에서 참조후에 +1을 해주면 끝
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int main() {
string eng;
vector<int> engList(26);
cin >> eng;
// 문자열의 크기만큼 소문자 밖에 없으니 'a'의 수부터 차례대로 뺀 인덱스를 구해 +1
for (int i = 0; i < eng.length(); i++) {
engList[eng[i] - 'a']++;
}
for (int i : engList) {
cout << i << " ";
}
}