[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;
}
결과
Leave a comment