안녕하세요. 오늘은 프로그래머스 단어 변환 문제를 풀어보려고 합니다.
https://programmers.co.kr/learn/courses/30/lessons/43163
public class Solution {
//answer : words 속 단어 개수가 50이하이므로 51로 설정
//visited : 각 words 배열을 방문했는지 체크
int answer = 51;
boolean[] visited;
public int solution(String begin, String target, String[] words) {
//answer, visited배열 초기화
answer = 51;
visited = new boolean[words.length];
dfs(begin, target, words, 0);
//삼항연산자: (조건) ? 조건=true면 여기 탐 : 조건=false면 여기 탐
answer = (answer == 51) ? 0 : answer;
return answer;
}
private void dfs(String begin, String target, String[] words, int cnt) {
if (begin.equals(target)) {
answer = (answer > cnt) ? cnt : answer;
return;
} else {
for (int i = 0; i < words.length; i++) {
if (visited[i]) {
continue;
}
int tmp = 0;
for (int j = 0; j < begin.length(); j++) {
if (begin.charAt(j) == words[i].charAt(j)) {
tmp++;
}
if (tmp == begin.length()-1) {
visited[i] = true;
dfs(words[i], target, words, cnt + 1);
visited[i] = false;
}
}
}
}
}
}