[Algorithm - Programmers] 단어 변환

nunu·2023년 12월 17일
0

Algorithm

목록 보기
114/142

https://school.programmers.co.kr/learn/courses/30/lessons/43163

제출 코드

import java.util.LinkedList;
import java.util.Queue;
class Solution {
    public int solution(String begin, String target, String[] words) {
        int tIdx = -1;
        for (int i = 0; i < words.length; i++) {
            if (target.compareTo(words[i]) == 0) {
                tIdx = i;
                break;
            }
        }
        if (tIdx == -1)
            return 0;

        int[] visited = new int[words.length];
        Queue<Integer> queue = new LinkedList<>();
        for (int i = 0; i < words.length; i++) {
            if (visited[i] == 0) {
                int check = 0;
                for (int j = 0; j < begin.length(); j++) {
                    if (begin.charAt(j) != words[i].charAt(j)) {
                        check++;
                        if (check > 1)
                            break;
                    }
                }
                if (check == 1) {
                    visited[i] = 1;
                    queue.offer(i);
                }
            }
        }

        int now;
        while (!queue.isEmpty()) {
            now = queue.poll();
            if (begin.equals(target)) {
                break;
            }

            for (int i = 0; i < words.length; i++) {
                if (visited[i] == 0) {
                    int check = 0;
                    for (int j = 0; j < words[now].length(); j++) {
                        if (words[now].charAt(j) != words[i].charAt(j)) {
                            check++;
                            if (check > 1)
                                break;
                        }
                    }
                    if (check == 1) {
                        visited[i] = visited[now] + 1;
                        queue.offer(i);
                    }
                }
            }
        }
        return visited[tIdx];
    }
}
profile
Hello, I'm nunu

0개의 댓글