[프로그래머스 / C++] 모음 사전

YH·2024년 1월 16일
0

문제

모음 사전 : 문제 링크


문제 분석

  • 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"이다. 단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성

  • 제한 사항

  • word의 길이는 1 이상 5 이하이다.
  • word는 알파벳 대문자 'A', 'E', 'I', 'O', 'U'로만 이루어져 있다.
  • 알파벳별로 숫자를 부여하기 위해 map을 사용할 것 이므로 map 헤더를 include
  • 주어진 단어가 사전에서 몇 번째 단어인지 저장할 정수형 변수 answer을 0으로 초기화하고, A부터 U까지 알파벳을 pair<char, int> 형으로 0부터 4까지 숫자를 부여. 정수형 벡터 num에 5^0부터 5^4(자릿수별 필요 연산 횟수)의 누적값을 내림차순 저장
  • 각 자릿수별 필요 연산 횟수 * 알파벳 리스트의 인덱스(A = 0 ~ U = 4) 연산을 자릿수만큼 반복
  • for loop를 통해 문자열 word의 첫번째부터 마지막 원소까지 순회하고, alpha내에 현재 원소의 번호에 num의 현재 인덱스 값을 곱하고 1을 더한수를(자릿수에 따라 시작되는 숫자가 정해지므로) answer에 더하여 저장하는 것을 반복. 최종적으로 저장된 answer을 return

풀이

#include <string>
#include <vector>
#include <map>

using namespace std;

int solution(string word) {
    int answer = 0;
    map<char, int> alpha{
        make_pair('A', 0),
        make_pair('E', 1),
        make_pair('I', 2),
        make_pair('O', 3),
        make_pair('U', 4)
    };
    vector<int> num{781, 156, 31, 6, 1};
    
    for(int i = 0; i < word.size(); ++i) {
        answer += alpha[word[i]] * num[i] + 1;
    }
    return answer;
}
profile
Keep Recycling Your Dreams

0개의 댓글