본문 바로가기

ProgramSoliving

프로그래머스 : 단어변환

반응형
package excirsize;

import java.util.LinkedList;
import java.util.Queue;

public class 단어변환 {

	public int solution(String begin, String target, String[] words) {
		int answer = BFS(begin, target, words);

		return answer;
	}

	private int BFS(String begin, String target, String[] words) {
		int time = 0;
		Queue<String> q = new LinkedList<String>();
		q.add(begin);
		boolean visit[] = new boolean[words.length];
		while (!q.isEmpty()) {
			int size = q.size();
			for (int s = 0; s < size; s++) {
				String cur = q.poll();
				if (target.contentEquals(cur)) {
					return time;
				}

				for (int i = 0; i < words.length; i++) {
					if (visit[i])
						continue;
					if (compStr(cur, words[i])) {
						visit[i] = true;
						q.add(words[i]);
					}
				}
			}
			++time;
		}

		return 0;
	}

	/*
	 * 단어가 하나 다른가 하나가 다름 : true 아니면 : false
	 */
	static public boolean compStr(String str1, String str2) {
		if (str1.length() != str2.length())
			return false;
		int cnt = 0;
		for (int i = 0; i < str1.length() && cnt < 2; i++) {
			if (str1.charAt(i) != str2.charAt(i)) {
				cnt++;
			}
		}

		if (cnt == 2)
			return false;

		return true;
	}
}
반응형

'ProgramSoliving' 카테고리의 다른 글

백준 : 1519  (1) 2020.09.15
프로그래머스 : 여행경로  (0) 2020.09.12
프로그래머스 : 네트워크  (0) 2020.09.11
프로그래머스 : 타겟 넘버  (0) 2020.09.11
프로그래머스 : 방금그곡  (0) 2020.07.25