
-Code
class Solution {
static int answer;
public int solution(String begin, String target, String[] words) {
// visited와 answer 초기화
boolean[] visited = new boolean[words.length];
answer = Integer.MAX_VALUE;
DFS(0, begin, target, words, visited);
return answer == Integer.MAX_VALUE ? 0 : answer;
}
private static void DFS(int cnt, String now, String target, String[] words, boolean[] visited) {
// 목적어와 같아지면 값비교 후 최소값 저장
if (now.equals(target)) {
answer = Math.min(answer, cnt);
return;
}
// 값을 돌면서 1개만 변한 문자열인데 방문하지 않은 경우 탐색
for (int i = 0; i < words.length; i++) {
if (!visited[i] && canChange(now, words[i])) {
visited[i] = true;
DFS(cnt + 1, words[i], target, words, visited);
visited[i] = false;
}
}
}
// 한글자만 다른지 확인
private static boolean canChange(String word1, String word2) {
int cnt = 0;
for (int i = 0; i < word1.length(); i++) {
if (word1.charAt(i) == word2.charAt(i)) {
cnt++;
}
}
return cnt == (word1.length() - 1);
}
}
answer 값 초기화를 이상하게 한 것과 실수로 예제만 보고 판단해서 3인 경우에만 1개만 변환 확인되는 메서드로 만들어서 틀렸었습니다. 그래서 해당 부분을 수정하여 해결했습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [백준/Java] 2775번 부녀회장이 될테야 (0) | 2026.01.08 |
|---|---|
| [백준/Java] 11048번 이동하기 (0) | 2026.01.08 |
| [프로그래머스/Java] 네트워크 (0) | 2026.01.08 |
| [프로그래머스/Java] 완주하지 못한 선수 (0) | 2026.01.08 |
| [백준/Java] 27982번 큐브 더미 (0) | 2026.01.08 |