알고리즘/프로그래머스 1단계

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

게임만드는학생 2023. 8. 4. 14:12

https://school.programmers.co.kr/learn/courses/30/lessons/181902

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

#include <string>
#include <vector>

using namespace std;

vector<int> solution(string my_string) {
    vector<int> answer;
    for (int i = 0; i < 52; i++)answer.push_back(0);
    for (int i = 0; i < my_string.length(); i++)
    {
        if (my_string[i] > 96)
            answer[my_string[i] - 97 + 26]++;
        else
            answer[my_string[i] - 65]++;
    }
    return answer;
}

 

설명

문자열이 주어지면 알파벳이 각각 몇개인지 세는 문제이다. 

answer에 대 소문자 합하여 52개 공간을 만든다.

 

각 알파벳의 아스키 코드를 이용하여  my_string[i] > 96 즉, 소문자이면 a 의 아스키코드인 97을 빼고 대문자 26개를 건너뛰 인덱스 26을 더해 1을더한다. 

마찬가지로 my_string[i] <= 96 이면 대문자이고 -65 를 하여 인덱스화 시킨다.