반응형
https://www.acmicpc.net/problem/10808
10808번: 알파벳 개수
단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다.
www.acmicpc.net
풀이
문자열의 원리를 이해하고 있으면 쉽게 풀 수 있는 문제이다.
나의 코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
string s;
vector<int> v(26);
cin >> s;
for (char c : s) {
int num = c - 97;
v[num]++;
}
for (int a : v) {
cout << a << ' ';
}
}
C++ 11 이상에서 지원하는 ranged-based loop를 사용해보았다!
나는 아스키 코드 값을 암기하고 있어서 아스키 코드 값을 이용하여 코드를 작성했다.
(소문자 a 아스키 코드 값 : 97 대문자 A 아스키 코드 값 : 65) // 32를 빼주면 된다!
하지만, 아스키 코드 값을 몰라도 심지어 추가 메모리를 사용하지 않고도 풀 수 있는 코드가 존재했다.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
string s;
cin >> s;
for (char a = 'a'; a <= 'z'; a++) {
int cnt = 0;
for (auto c : s)
if (a == c) cnt++;
cout << cnt << ' ';
}
}
auto 키워드에 익숙해지자!
반응형
'Baekjoon' 카테고리의 다른 글
[C++] 1475번 : 방 번호 (0) | 2024.02.22 |
---|---|
[C++] 2577번: 숫자의 개수 (0) | 2024.02.21 |
[C++]백준 10804번: 카드 역배치 (1) | 2024.02.08 |
[C++]백준 10093번: 숫자 (0) | 2024.02.06 |
[C++]백준 2309번: 일곱 난쟁이 (1) | 2024.02.05 |