기록장
TODAY TOTAL
[BOJ] 10808번 : 알파벳 개수

https://www.acmicpc.net/problem/10808


 구현 코드 

#include<iostream>
using namespace std;

int main()
{
    string alpha = "abcdefghijklmnopqrstuvwxyz";
    string str;
    int ans[26] =  {0,};
    cin>>str;
    
    for(int i=0;i<alpha.length();i++)
    {
        for(int j=0;j<str.length();j++)
        {
            if(alpha[i]-str[j] == 0)
                ans[i]++;
        }
    }
    
    for(int i=0;i<26;i++)
    {
        cout<<ans[i]<<" ";
    }
    return 0;
}

 

 

 리뷰 

1. 알파벳을 저장하는 변수를 따로 둘 필요 없이 아스키 코드를 이용하여 인덱스를 넣어주면 더 간단하게 구현할 수 있다.

    for(char a : str){
    	cnt[a - 'a']++;
	}

 

2. 배열 초기화

배열 초기화를 할 때, 초기값 설정을 따로 안해주면 ++ 연산에서 오류가 생길거라 생각해서 전부 0으로 초기화하려고 이렇게 작성했다.

int a[26] = {0,} 
/* 
첫번째 요소로 적은 수만 적용되고 다음 요소는 전부 0으로 초기화됨
int a[26] = {1,} 이면 {1,0,0,0...}이라는 의미
*/

 

하지만 그냥 다음과 같이 선언만 해도 0으로 전부 초기화가 되어있더라. vector도 마찬가지다.

int cnt[26];
vector<int> vec(26);

 

 

  Comments