본문 바로가기

Language/C++

[프로그래머스][위클리 챌린지-5주차] [DFS] 5주차_모음사전 - 컴도리돌이

728x90
728x90
 

코딩테스트 연습 - 5주차_모음사전

사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니

programmers.co.kr

 

  • 나올 수 있는 경우의 수가 10000 이하이기 때문에 DFS로 충분히 시간복잡도 생각하지 않고 풀 수 있다.
  • alpha 라는 모음 값이 저장되어 있는 배열을 만들어서 나올 수 있는 모든 경우의 수를 map 함수를 이용해서 저장한다.
  • 단순 구현 문제.
#include <string>
#include <vector>
#include <map>

using namespace std;

int count =1;
vector<string> alpha = {"A","E","I","O","U"};
map<string,int> voca;

void dfs(string w)
{
    if(w.length()>5) return;
    voca[w] = count++;
    for(auto s : alpha) dfs(w + s);
}

int solution(string word) {
    for(auto s : alpha) dfs(s);
    return voca[word];
}
728x90
728x90