Programmers Review

[Lv 2] 모음사전

hanseongbugi 2024. 8. 13. 15:33

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

 

프로그래머스

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

programmers.co.kr

 

완전탐색으로 문제를 해결하였다.

AEIOU로 이루어진 문자를 통해 사전순으로 word에 해당하는 번호를 찾아야한다.

따라서 AEIOU를 미리 문자열로 선언한 후 target이라는 문자열에 문자를 채운다.

target의 길이가 5미만인 경우 계속해서 dfs를 호출하고 target문자열의 끝부분을 제거한다면 사전순으로 count할 수 있다.

 

#include <string>
#include <vector>

using namespace std;

string alpha = "AEIOU";
int answer = -1;
int count = 0;

void dfs(string target, string word){
    if(answer == count)
        return;
    
    for(int i = 0;i<5;i++){
        target += alpha[i];
        count++;
        if(target == word){
            answer = count;
            return;
        }
        if(target.length() < 5){
            dfs(target, word);
        }
        target.pop_back();
    }
}
int solution(string word) {
    answer = -1;
    count = 0;
    
    dfs("",word);
    return answer;
}