https://school.programmers.co.kr/learn/courses/30/lessons/84512
완전탐색으로 문제를 해결하였다.
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;
}
'Programmers Review' 카테고리의 다른 글
[Lv 2] 다리를 지나는 트럭 (0) | 2024.10.03 |
---|---|
[Lv 2] 2개 이하로 다른 비트 (0) | 2024.10.03 |
[Lv 2] k진수에서 소수 개수 구하기 (0) | 2024.08.13 |
[Lv 2] 방문 길이 (0) | 2024.08.10 |
[Lv 2] [3차] n진수 게임 (0) | 2024.08.10 |