반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Dependency Injection
- Django
- table tag
- Spring
- html cell
- table cell size
- Django column 값 가져오기
- Django 특정 값 가져오기
- DI
- html cell size
- Dependency
- html
Archives
- Today
- Total
emluy 개발 일기
C++ - (프로그래머스) 단어변환 본문
SMALL
1. idea
- 각 단어들 중 한 글자만 차이나는 것만 선택해야한다.
- 선택된 것은 체크해주고 target 단어가 나올 때 까지 dfs함수를 반복한다.
- target은 없고 한글자만 다른 단어가 계속 나오는 경우 dfs를 빠져나올 수 있게 한다.
- 모든 글자를 탐색완료 했거나 target 단어를 찾았다면 dfs를 빠져나올 수 있게 한다.
#include <string>
#include <vector>
#include <iostream>
using namespace std;
string target_word;
vector<string> words_list;
bool check[51] = { false };
int answer = 100;
void dfs(string begin, int result) {
if (target_word == begin) {
answer = result;
return;
}
for (int i = 0; i < words_list.size(); i++) {
int count = 0;
for (int j = 0; j < words_list[i].size(); j++) {
if (begin[j] != words_list[i][j])count++;
if (count == 2) break;
}
//만약 한글자만 다르고 두글자는 같다면 단어 변환 가능
if (count == 1) {
if (check[i] == false) {
check[i] = true;
dfs(words_list[i], result + 1);
check[i] = false;
}
}
}
}
int solution(string begin, string target, vector<string> words) {
target_word = target;
words_list = words;
dfs(begin,0);
if (answer == 100) answer = 0;
return answer;
}
반응형
'알고리즘 > c, c++' 카테고리의 다른 글
C++ - (프로그래머스) BFS/DFS 네트워크 (0) | 2020.10.16 |
---|---|
C++ - vector<string> 복사 & cout 으로 출력 (0) | 2020.10.16 |
DFS, BFS 정리 (0) | 2020.10.16 |
C++ - (백준) 14499번 주사위 굴리기 (0) | 2020.10.10 |
C++ - (백준) 16236번 아기상어 (0) | 2020.10.09 |
Comments