[10808] 알파벳 개수

chxxrin·2024년 7월 31일
0

백준 알고리즘

목록 보기
3/3

문제

해결방법

  • 입력 문자열의 각 문자(a부터 z까지) 빈도를 계산하는 프로그램이다.
  • 이를 통해 문자열 내에서 각 문자가 몇 번 등장하는지 출력해야한다.

방법 1.

  • 문자열을 a부터 z까지 총 26번을 모두 돌아야한다
  • 코드가 맞긴 하지만, 쓸데없이 많이 돈다
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    string s;
    cin >> s;

    // 이거는 문자열을 a부터 z까지 총 26번을 모두 돌아야 한다
    for(char a='a' ; a<='z';a++){
        int cnt = 0;
        for (auto c: s){
            if(a==c) {
                cnt++;
            }
        }
        cout << cnt << ' ';
    }

}

방법2.

  • 미리 a부터 z까지의 개수를 셀 빈 배열을 하나 만든다 : int freq[26];
  • 이 때, 배열을 전역변수로 선언하면 자동으로 0으로 초기화가 되지만,
  • 만약 지역변수로 선언하면 int freq[26]={}, fill(freq,freq+26,0) 과 같은 처리를 해야함
  • auto : 변수의 타입을 자동으로 추론, 여기서는 자동으로 char형으로 추론이 된다.
#include <iostream>

using namespace std;

// a부터 z까지의 개수를 셀 빈 배열

int freq[26];

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    string s;
    cin >> s;

    // 입력받은 문자열 s의 각 문자를 순회하며, 각 문자의 빈도를 freq 배열에 저장
    // c - 'a'는 문자를 'a'부터 0, 1, 2, ..., 25로 변환하는 역할을 합니다. 예를 들어, 'a'는 0, 'b'는 1, ..., 'z'는 25가 됩니다.
    for(auto c: s) { // auto : 변수의 타입을 자동으로 추론
        freq[c -'a']++; // freq[c - 'a']++를 통해 해당 문자의 빈도를 1씩 증가
    }
    // freq 배열의 모든 원소를 순회하며, 각 알파벳의 빈도를 출력
    for(int i=0;i<26;i++){
        cout << freq[i] << ' '; // 각 알파벳 빈도를 공백으로 구분하여 출력
    }

}

0개의 댓글

관련 채용 정보