안녕하십니까. Eun🦆입니다.
풀이법 입니다.
#include <string>
#include <vector>
using namespace std;
int answer = 99;
void dfs(string begin, string target, vector<string> words, vector<bool> use, int cnt)
{
// 매번 들어올 때마다 글자가 한 개 다른 문자를 찾는다.
for(int i=0;i<words.size();i++)
{
int count = 0;
for(int j=0;j<begin.length();j++)
{
if(use[i]==0 & begin[j]!=words[i][j])
count++;
}
if(count==1)
{
if(words[i]==target & answer > cnt+1)
{
answer = cnt+1;
return;
}
use[i] = 1;
dfs(words[i], target, words, use, cnt+1);
// 재귀로 dfs를 빠져나오면 해당 경우에서 다른 cnt가 1인 경우로 넘어가기 위해 use 초기화
use[i] = 0;
}
}
}
int solution(string begin, string target, vector<string> words) {
vector<bool> use(words.size(), 0);
int cnt = 0;
dfs(begin, target, words, use, cnt);
if(answer == 99)
return 0;
return answer;
}
'개발 > Coding Test' 카테고리의 다른 글
[프로그래머스 Lv3 C++] 가장 긴 팰린드롬 (0) | 2022.06.07 |
---|---|
[프로그래머스 Lv3 C++] 이중우선큐 (0) | 2022.06.07 |
[프로그래머스 Lv3 C++] 정수 삼각형 (0) | 2022.06.07 |
[프로그래머스 Lv3 C++] 단속카메라 (0) | 2022.06.07 |
[프로그래머스 Lv3 C++] 네트워크 (0) | 2022.06.07 |
댓글