문제 설명 보기
>>programmers.co.kr/learn/courses/30/lessons/43163
코딩테스트 연습 - 단어 변환
두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수
programmers.co.kr
주어진 String 배열 안에서 진행 할 수 있는 Node가 한글자만 다른 String인 탐색 유형의 문제이다.
Queue를 사용한 BFS를 통해 해결했다.
import java.util.HashSet;
import java.util.LinkedList;
class Solution {
public int solution(String begin, String target, String[] words) {
int answer = 0;
HashSet<String> isTraveled = new HashSet<>();
LinkedList<String> nextStr = new LinkedList<>();
nextStr.add(begin);
while(!nextStr.isEmpty()){
int size = nextStr.size();
for(int i = 0; i < size; i++){
String str = nextStr.pollFirst();
if(str.equals(target)) return answer;
for(String word : words){
int cnt = 0;
for(int idx = 0; idx < word.length(); idx++){
if(str.charAt(idx) == word.charAt(idx)){
cnt++;
}
}
if(cnt == str.length()-1 && !isTraveled.contains(word)){
isTraveled.add(word);
nextStr.add(word);
}
}
}
answer++;
}
return 0;
}
}
728x90
반응형
'Algorithms > Programmers' 카테고리의 다른 글
[프로그래머스] 큰 수 만들기 / JAVA (0) | 2021.04.19 |
---|---|
[프로그래머스] 순위 / JAVA (0) | 2021.03.20 |
[프로그래머스] 정수 삼각형 / JAVA (0) | 2021.03.11 |
[프로그래머스] 조이스틱 / JAVA (0) | 2021.03.10 |
[프로그래머스] 가장 먼 노드 / JAVA (0) | 2021.03.06 |