[프로그래머스(Programmers)] 단어 변환 (java, DFS)

1
post-thumbnail

안녕하세요. 오늘은 프로그래머스 단어 변환 문제를 풀어보려고 합니다.


문제 링크

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;
					}
				}
			}
		}
	}

}

0개의 댓글