-
[프로그래머스] 단어 변환Algorithm/Programmers 2020. 10. 17. 18:08
programmers.co.kr/learn/courses/30/lessons/43163
코딩테스트 연습 - 단어 변환
두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수
programmers.co.kr
문제풀이
dfs를 이용하여 현재 단어와 한 개의 알파벳만 차이나는 words를 찾아 이동시킨다.
소스코드
더보기#include <string> #include <vector> using namespace std; int visited[50] = { 0, }; int answer = 987654321; bool checkChangeWord(string s1, string s2) { int diffCount = 0; for (int i = 0; i < s1.length(); i++) { if (s1[i] != s2[i]) { diffCount++; if (diffCount > 1) { return false; } } } return diffCount == 1 ? true : false; } void solve(string cur, string target, vector<string> words, int depth) { if (cur == target) { if (answer > depth) { answer = depth; } return; } if (answer < depth) { return; } for (int i = 0; i < words.size(); i++) { if (visited[i] == 0 && checkChangeWord(cur, words[i])) { visited[i] = 1; solve(words[i], target, words, depth + 1); visited[i] = 0; } } } int solution(string begin, string target, vector<string> words) { solve(begin, target, words, 0); return answer == 987654321 ? 0 : answer; }
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 체육복 (0) 2021.03.29 [프로그래머스] 디스크 컨트롤러 (0) 2020.10.17 [프로그래머스] JadenCase 문자열 만들기 (0) 2020.09.09 [프로그래머스] 야근 지수(c++) (0) 2020.09.08 [프로그래머스] 입국 심사(javascript) (0) 2020.09.05