https://school.programmers.co.kr/learn/courses/30/lessons/43163
문해력이 ㅈㄴ 딸려서 그런가 예시가 이해가 안 감
두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다.
1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다.
2. words에 있는 단어로만 변환할 수 있습니다.
예를 들어 begin이 "hit", target가 "cog", words가 ["hot","dot","dog","lot","log","cog"]라면 "hit" -> "hot" -> "dot" -> "dog" -> "cog"와 같이 4단계를 거쳐 변환할 수 있습니다.
두 개의 단어 begin, target과 단어의 집합 words가 매개변수로 주어질 때, 최소 몇 단계의 과정을 거쳐 begin을 target으로 변환할 수 있는지 return 하도록 solution 함수를 작성해주세요.
hit -> hot -> dot -> dog -> cog 이렇게 1개씩 변경이 되었는데
애초애 dot에서 d를 변경하지 않고 걍 넘어가고 나중에 cog때 c로 바꾸면 되는거 아님?
'1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다.' 라고 했지 반드시 바꾸라고 안 했고 lot, log는 넘어갔잖아.
하아..... 문제부터 이해가 안 가네 알고리즘 너무 어렵다...
------------------------------------ 추가 글 ------------------------------------
댓글들을 보며 이해가 갔다!!
내가 이해한건 이럼.
첫번째 hit과 hot은 가운데 1개만(O) 다름. 그래서 i만 바꿔주면 됨.
두번째 hot과 dot은 앞에 1개만(d) 다름. 그래서 h만 바꿔주면 됨. (dog와 바꾸려면 앞, 뒤 2개가 다르므로 바꿀 수 없으니 여기서 d를 바꿔줌)
세번째 dog와 dot는 뒤에 1개만(g) 다름. 그래서 t만 바꿔주면 됨.
네번째 dog와 lot는 앞, 뒤 2개가 다르기 때문에 바꿀 수 없음.
다섯번째 dog와 log는 앞 1개만(d) 다름. 하지만 마지막 cog하고 c만 바꾸면 되기 때문에 바꿀 필요가 없음
마지막 dog와 cog는 앞 1개만(c) 다름. 그래서 d만 바꿔주면 됨.
이거인거 같은데 맞지?
트린장인
현재상태에서 변환 가능한 집합을 BFS돌면될거같은데?
집에가게해줘
BFS 도는건 알겠는데 글에 썻듯이 dot때 d를 바꿀 이유가 없지 않아?
dot때그냥 넘어가고 cog때 c로 바꾸면 끝 아님?
트린장인
규칙이 한번에 한개의 알파벳인데 그냥 넘어간다는게 잘 이해안가
집에가게해줘
한번에 한 개의 알파벳을 바꿀 수 있다 라는 뜻이 1개는 반드시 바꿔야 한다는 거야?
그럼 lot랑 log는 왜 안 바꾸고 건너 뛴거?
smarthuman
그게 아니라 모든 경우의수를 체크해야한다는거지
lot랑 log의 경우의수도 있는데, 지금 적어둔 케이스보다 느리니깐 (제일 빠른케이스가 아니라서)
예시에 적지 않은거임
반박시내말이맞음
한번에 하나의 알파벳을 바꿀 수 있는데,
hot 에서 dog로 어떻게 넘어간단 말이야?
피파크
words는 단순히 바꿀 수 있는 단어 집합을 제시한거야 주어진 순서대로 꼭 거쳐 가라는게 아니고
다르다르다르다
뭐지 링크 들가보니까 옛날에 풀었나본데 기억이 안나네