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

 

https://school.programmers.co.kr/learn/courses/30/lessons/84512/solution_groups?language=cpp 

 

프로그래머스

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

programmers.co.kr


 

해결전략

 

문자열

5진법


 

 

정답 코드

 

#include <string>
#include <vector>
using namespace std;

int solution(string word) {
    // 각 알파벳 별 가중치 (5^4 ~ 5^0)
    // nums[]는 각 자리수에 따른 'A', 'E', 'I', 'O', 'U'의 가중치
    // 예를 들어, 첫 번째 자리가 A 다음으로 E가 오려면 A로 만들 수 있는 모든 조합을 거쳐야 하므로 E의 가중치는 5^4.
    vector<int> nums = {781, 156, 31, 6, 1}; 

    string vowels = "AEIOU"; // 모음 문자열

    int answer = word.length();//최소로 들어갈 값은 문자열의 길이. 왜냐하면 사전에서 어떤 단어든 그 길이만큼은 최소한 순서에 포함되기 때문

    for(int i=0; i<word.length(); i++) { // 입력받은 단어의 각 문자를 순회
        for(int j=0; j<vowels.length(); j++) { // 모음 문자열을 순회
            if(word[i] == vowels[j]) { 
                answer += nums[i]*j; 
                /* 
                해당 문자가 사전에서 몇 번째 위치하는지 계산하여 결과값에 더해주는 부분
                만약 현재 확인하는 단어의 철자가 사전에서 n번째라면,
                그 철자가 나올 수 있는 경우의 수(nums[i])와 n(j)을 곱한 값을 결과값에 더한다.
                */
            }
        }
    }

    return answer;
}