본문 바로가기

Algorithm/Brute Force

(C++) - 프로그래머스(위클리 챌린지) : 5주차_모음사전

반응형

https://programmers.co.kr/learn/courses/30/lessons/84512

 

코딩테스트 연습 - 모음사전

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

programmers.co.kr

기본 전수조사 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

모음목록 문자열 str, 모음으로 이뤄진 사전 내용을 저장할 map변수 comb을 선언해줍니다.

📔 풀이과정

dfs를 수행해 5개의 모음 중 i개로 만들 수 있는 문자열들을 모두 구해 comb에 저장해줍니다.

📔 정답출력

comb에 대해 for loop를 수행하며 원하는 단어가 나오면 answer를 반환해줍니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
string str = "AEIOU";
map <string,int> comb;

void dfs(int depth, int want, string tmp){
    if(depth == want){
        comb[tmp] = 1;
        return;
    }
    for(int i = 0; i < 5; i++){
        dfs(depth + 1, want, tmp + str[i]);
    }
}

int solution(string word) {
    comb.clear();
    int answer = 0;
    
    for(int i = 1; i <= 5; i++) dfs(0,i,"");
    
    for(auto c : comb){
        answer++;
        if(c.first == word) return answer;
    }
    
    return answer;
}

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.