예시
ㅇㅇ
첫번째 시도
왜 자꾸 틀린값이 나올까 궁금했는데 값을 확인해보니 레벨값을 안정해줘서 무조건 카운트 하는거였네요.
function solution(begin, target, words) {
var answer = 0; // 카운트
let ch = []; //방문여부
let queue = [];
if(!words.includes(target)) return 0;
queue.push(begin);
while(queue.length){
let v = queue.shift();
let len = queue.length;
if(v===target) return answer;
words.forEach(word => {
let notEqual = 0;
if(ch.includes(word)) return;
for(let i=0;i<word.length;i++){
if(v[i]!==word[i]) notEqual++;
}
if(notEqual===1){
queue.push(word);
console.log(queue);
ch.push(word);
answer++;
}
})
}
return answer;
}
두번째 시도
안타깝게도 원인은 알았으나, 다른 분의 코드를 참고해서 이해했습니다.
값을 하나씩만 밀어넣는게 아니라 배열형태로 옆에 레벨값을 표기해주는군요.
function solution(begin, target, words) {
let answer = 0;
let ch = [];
let queue = [];
if (!words.includes(target)) return 0;
queue.push([begin, answer]);
//console.log(queue);
while (queue) {
let [v, L] = queue.shift();
if (v === target) return L;
words.forEach((word) => {
let notEqual = 0;
if (ch.includes(word)) return;
for (let i = 0; i < word.length; i++) {
if (word[i] !== v[i]) notEqual++;
}
if (notEqual === 1) {
queue.push([word, L+1]);
console.log(queue);
ch.push(word);
}
});
}
return answer;
}
728x90
'프로그램 강좌' 카테고리의 다른 글
[프로그래머스]로또의 최고 순위와 최저 순위 - javascript (0) | 2021.12.05 |
---|---|
[프로그래머스]여행경로 - javascript (0) | 2021.12.04 |
[프로그래머스]네트워크 javascript (0) | 2021.12.02 |
[프로그래머스]타겟 넘버 - javascript (0) | 2021.12.01 |
Visual Studio 2019 설치 방법 (0) | 2021.11.30 |