반응형

처음 이 문제를 봤을 때 a~z까지의 배열을 생성해서 하나씩 카운트해야되나? 라는 생각이 들었다
하지만 너무 비효율적이여서
아스키코드로 해결하면 좋겠다고 생각했다
a의 아스키코드 값이 97고,b는 98이라는 점을 이용해
문자열을 순회하면서 하나씩 카운팅 해주는 방식으로 풀었다
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main() {
int a[26] = {};
string str;
cin >> str;
for(int c : str)
{
c -= 97;
a[c]++;
}
for(int b : a)
{
cout << b << " ";
}
return 0;
}
배열을 26으로 잡은 이유는 a~z가 총 26개이기 때문이고
배열의 원소값을 알파벳 등장 횟수라고 생각하면 된다
배열을 처음에 초기화 해줘야하는 이유는
쓰레기 값을 방지하기 위함이다
초기화되지 않은 배열에 접근해보면 이상한 값이 나온다
하지만 배열을 전역변수 영역(main함수 밖)에 선언한다면
자동으로 0으로 초기화되기에
굳이 초기화 해줄 필요가 없다
반응형
'algorithm > 배열' 카테고리의 다른 글
| [algorithm] 백준 11328번 Strfry (0) | 2026.01.10 |
|---|---|
| [algorithm] 백준 13300번 방 배정 (0) | 2026.01.10 |
| [algorithm] 백준 1475번 방 번호 (0) | 2026.01.10 |
| [algorithm] 백준 10807번 개수 세기 (0) | 2026.01.10 |
| [algorithm] 백준 2577번 숫자의 개수 (0) | 2026.01.10 |
