programmers

[c++ programmers 모음사전]

vicky_ 2022. 4. 2. 14:28
728x90

처음에는 경우의 수 구해서 좀 무식하게 풀었다.

#include <string>
#include <vector>

using namespace std;

int solution(string word) {
    int answer = 0;
   
    for (int i = 0; i < word.size(); ++i){
        if (word[i] == 'A'){
            answer += 1;
        }
        
        if (word[i] == 'E'){
            if (i == 0){
                answer += 781 + 1;
            }
            if (i == 1){
                answer += 156 + 1;
            }
            if (i == 2){
                answer += 31 + 1;
            }
            if (i == 3){
                answer += 6 + 1;
            }
            if (i == 4){
                answer += 2;
            }
        }
        
        if (word[i] == 'I'){
            if (i == 0){
                answer += 781 * 2 + 1;
            }
            if (i == 1){
                answer += 156 * 2 + 1;
            }
            if (i == 2){
                answer += 31 * 2 + 1;
            }
            if (i == 3){
                answer += 6 * 2 + 1;   
            }
            if (i == 4){
                answer += 3;
            }
        }
        
        if (word[i] == 'O'){
            if (i == 0){
                answer += 781 * 3 + 1;
            }
            if (i == 1){
                answer += 156 * 3 + 1;
            }
            if (i == 2){
                answer += 31 * 3 + 1;
            }
            if (i == 3){
                answer += 6 * 3 + 1;   
            }
            if (i == 4){
                answer += 4;
            }
        }
        
        if (word[i] == 'U'){
            if (i == 0){
                answer += 781 * 4 + 1;
            }
            if (i == 1){
                answer += 156 * 4 + 1;
            }
            if (i == 2){
                answer += 31 * 4 + 1;
            }
            if (i == 3){
                answer += 6 * 4 + 1;   
            }
            if (i == 4){
                answer += 5;
            }
        }
    }
    return answer;
}

하지만 이 방법은 자릿수가 늘어나면 쓸 수 없기 때문에

구글 검색으로 더 간단히 풀이를 찾아보았고, DFS로 푸는 방법이 있었다!!

(출처 : https://comdolidol-i.tistory.com/253)

왜 깊이 탐색을 생각 못했지...역시 답을 알고 나면 갑자기 쉽게 느껴진다. 

 

1. map을 이용하여 A E I O U로 이루어진 5자리 단어 사전을 만든다.

2. 입력 단어에 해당하는 순서를 찾는다.