#include<iostream>
using namespace std;
int arr[26];
string c;
int o;
int main() {
cin >> c;
for (int i = 0; ; i++) {
if (c[i] == '\0')
break;
else o++;
}
for (int i = 0; i < o; i++) {
if (c[i] == 'a') {
arr[0] += 1;
}
if (c[i] == 'b') {
arr[1] += 1;
}
if (c[i] == 'c') {
arr[2] += 1;
}
if (c[i] == 'd') {
arr[3] += 1;
}
if (c[i] == 'e') {
arr[4] += 1;
}
if (c[i] == 'f') {
arr[5] += 1;
}
if (c[i] == 'g') {
arr[6] += 1 ;
}
if (c[i] == 'h') {
arr[7] += 1;
}
if (c[i] == 'i') {
arr[8] += 1;
}
if (c[i] == 'j') {
arr[9] += 1;
}
if (c[i] == 'k') {
arr[10] += 1;
}
if (c[i] == 'l') {
arr[11] += 1;
}
if (c[i] == 'm') {
arr[12] += 1;
}
if (c[i] == 'n') {
arr[13] += 1;
}
if (c[i] == 'o') {
arr[14] += 1;
}
if (c[i] == 'p') {
arr[15] += 1;
}
if (c[i] == 'q') {
arr[16] += 1;
}
if (c[i] == 'r') {
arr[17] += 1;
}
if (c[i] == 's') {
arr[18] += 1;
}
if (c[i] == 't') {
arr[19] += 1;
}
if (c[i] == 'u') {
arr[20] += 1;
}
if (c[i] == 'v') {
arr[21] += 1;
}
if (c[i] == 'w') {
arr[22] += 1;
}
if (c[i] == 'x') {
arr[23] += 1;
}
if (c[i] == 'y') {
arr[24] += 1;
}
if (c[i] == 'z') {
arr[25] += 1;
}
}
for (int i = 0; i < 26; i++) {
cout << arr[i]<<" ";
}
}
정말 무식하게 풀었다.
풀고나서 다른 사람들이 푼 것을 봤다.
내가 보완할 수 있는 점은
- string의 크기를 널값이 나오기 전까지 반복문을 돌게 하는게 아니라 c.size()해서 충분히 구할 수 있다.
- case를 알파벳 전체로 만들어서 푸는 게 아니라 'a'의 아스키코드를 이용해 풀 수 있다. a와 나머지 알파벳의 차이가 arr의 index가 되도록하면 쉽게 풀 수 있다.
'A'의 아스키코드 65
'a'의 아스키코드 97
b의 아스키 코드는 98이다
box가 입력이 되었다고하면
0번째엔 b가 입력이 되었을것이다.
따라서 c[0]-'a' = 1 일 것이다.
arr[c[i]-'a']하면 원하는 알파벳 순서 index의 수를 증가시킬 수 있다.
- 한 글자 예를 들면 a 등 알파벳 한 글자를 비교할 때는 ' ' 작은 따옴표를 사용해야한다. 처음에 "a"를 비교해서 틀렸다.
'공부' 카테고리의 다른 글
BOJ 11004 해결, 시간 초과 (0) | 2022.01.13 |
---|---|
BOJ 9012 해결과 고찰.....(최악) (0) | 2022.01.12 |
BOJ 11365 3가지 풀이와 고찰 (0) | 2022.01.10 |
BOJ 1475 해결과 고찰 (9) | 2022.01.07 |
BOJ 1181, 10828 문제 해결과 고찰 (0) | 2022.01.06 |