728x90
🔮문제
begin -> target 단어로 가는 가장 짧은 단계 return
1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다.
2. words에 있는 단어로만 변환할 수 있습니다.
🔮풀이
1. target이 words에 존재하는 경우
2. target이 words에 존재하지 않는 경우
2-1. begin과 target의 차이=1 이면 탐색 종료
2-2. begin과 target의 차이=1이 아니면 차이가 1인 다음 단어 탐색, 단계(cnt) + 1
🔮코드
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int solution(string begin, string target, vector<string> words) {
int answer = 999;
int cnt = 0;
bool isOk = false;
//1. target이 words배열에 존재하는지 확인, 없으면 0 return
for(auto x : words){
if(x == target)
isOk = true;
}
if(isOk == false)
return 0;
//2. target이 words배열에 존재 할 경우
for(int i=0; i<words.size(); i++){
string cur = words[i];
int tmp_cnt = 0;
//2-1. 현재 단어와 target단어의 차이가 1이면 탐색 종료
for(int j=0; j<target.size(); j++){
if(begin[j] != target[j])
tmp_cnt++;
}
if(tmp_cnt == 1){
cnt+=1;
break;
}
else
tmp_cnt = 0;
//2-2. 그렇지 않을 경우 현재와 차이가 1인 다음 단어 탐색
for(int j = 0; j<cur.size(); j++){
if(begin[j] != cur[j])
tmp_cnt++;
}
if(tmp_cnt == 1){
begin = words[i];
cnt += 1;
}
}
answer = min(answer, cnt);
return answer;
}
728x90
'코딩 테스트' 카테고리의 다른 글
[Codility] Lesson3. FrogJmp (C++) (0) | 2021.02.23 |
---|---|
[Codility] Lesson1. BinaryGap (C++) (0) | 2021.02.23 |
[Codility] Lesson2. CyclicRotation (C++) (0) | 2021.02.22 |
[Codility] Lesson2. OddOccurrencesInArray (C++) (0) | 2021.02.22 |
[프로그래머스] 가장 먼 노드 (C++) (0) | 2021.02.18 |
댓글