Algorithm Study

[프로그래머스] 단어변환 ( level.3) / JAVA / DFS

hyun-1200 2022. 6. 3. 17:40

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

 

코딩테스트 연습 - 단어 변환

두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수

programmers.co.kr

 

1. String 값 비교는 == 이 아닌 equals 사용할 것.

 

2. 문제 변수 잘 생각해볼것. 여기서 헤맸는데, 

hot -> dot 비교할때 오직 전체길이 3개중에서 2개만 맞으면 바꿀 수 있는 경우라 생각해서 코드를 짰다.

그런데 그렇게 하면 hit -> pht 인 경우도 바꿀 수 있다고 판단하기 때문에 오류가 발생한다.

hit -> pht 의 경우 (h,t ) 개수로는 2개가 맞지만 실제 변경해야하는 알파벳은 2개라서(문제에서는 알파벳 1개만 변경가능하므로) 오류다.

: 값이 같은 갯수를 비교하는게 아니라, 값과 인덱스값도 동일한 값을 비교해야한다. 

 

3. 다 풀고 나니 changeNum 함수를 더 간단히 수정할 수 있을 것 같다.

처음에 개수로 판단하다 보니 check함수를 사용했는데, 인덱스값도 동일한지를 비교하면 간단하게 int count++ 로 사용할 수 있을 것 같다.

 

DFS 푸는 방식은 많이 어렵지않았지만, 문제 안에 세세하게 다시 따져줘야 할게 있는 것 같은 level3 문제였다.