[C++] 프로그래머스 문자 개수 세기

문제설명

알파벳 대소문자로만 이루어진 문자열 my_string이 주어질 때,
my_string에서 'A'의 개수,
my_string에서 'B'의 개수,
...,
my_string에서 'Z'의 개수,
my_string에서 'a'의 개수,
my_string에서 'b'의 개수,
...,
my_string에서 'z'의 개수를
순서대로 담은 길이 52의 정수 배열을 return 하는 solution 함수를 작성해 주세요.


제한사항

• 1 ≤ my_string의 길이 ≤ 1,000


입출력 예

my_string result
“Programmers” [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0]


풀이

먼저 0으로 초기화한 배열을 만든 뒤 아스키코드를 이용하여 문자열에서 알파벳의 개수를 파악하는 로직을 작성하였습니다.

#include <string>
#include <vector>

using namespace std;

vector<int> solution(string my_string) {
    vector<int> answer(52, 0);
    
    // 'A' - 65, 'a' - 97
    for(int i = 0; i < my_string.length(); i++)
    {
        if(my_string[i] - 'A' < 32)
        {
            answer[my_string[i] - 'A']++;
        }
        else
        {
            answer[my_string[i] - 'a' + 26]++;
        }
    }
    
    return answer;
}


결과

코드 실행결과

Categories:

Updated:

Leave a comment