Algorithm Problem/JavaScript

[javascript] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋‹จ์–ด ๋ณ€ํ™˜

deo2kim 2020. 10. 20. 08:40
๋ฐ˜์‘ํ˜•

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ

  • Lv3 | BFS

  1. begin ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ BFS ํƒ์ƒ‰
  2. BFS๋Š” target๊ณผ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ
  3. target๊ณผ์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•ด์„œ ๋‹ต์„ ์ถœ๋ ฅ
  4. ์•„๋ž˜์˜ ์ฝ”๋“œ์—์„œ๋Š” visited์™€ words_obj๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ
    ์ž˜ ์งœ๋ณด๋ฉด words_obj ํ•˜๋‚˜๋กœ ์ถฉ๋ถ„ํžˆ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค!

 

๐Ÿ’ป์†Œ์Šค ์ฝ”๋“œ

function solution(begin, target, words) {
    var answer = 0;
    // ํƒ€๊ฒŸ์ด ์›Œ๋“œ์— ์—†๋Š” ๊ฒฝ์šฐ
    if (!words.includes(target)) {
        return answer
    }
    
    let n = words.length
    // visited ์™€ queue
    let visited = Array(n).fill(0)
    let q = [begin]
    
    // ๋‹จ์–ด์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ์ฒด์— ์ €์žฅ
    const words_obj = {}
    for (let i in words) {
        words_obj[words[i]] = i
    }

    while (q.length > 0) {
        let c = q.shift()
        
        // ํƒ€๊ฒŸ ์›Œ๋“œ์— ๋„๋‹ฌํ•˜๋ฉด ๋
        if (c == target) {
            return visited[words_obj[c]]
        }
        for (let i in words) {
            if (visited[i] == 0) {
                let word = words[i]
                let diff = 0
                for (let j in word) {
                    if (c[j] != word[j]) {
                        diff++
                    }
                    if (diff > 1) {
                        break
                    }
                }
                if (diff == 1) {
                    q.push(word)
                    if (c == begin) {
                        visited[i] = 1
                    } else {
                        visited[i] = visited[words_obj[c]] + 1
                    }

                }
            }

        }
    }

    console.log(visited)
    return answer;
}

 

๐Ÿ“•๋ฌธ์ œ ํ™•์ธ

์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

๋งํฌ: https://programmers.co.kr/learn/courses/30/lessons/43163

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋‹จ์–ด ๋ณ€ํ™˜

๋‘ ๊ฐœ์˜ ๋‹จ์–ด begin, target๊ณผ ๋‹จ์–ด์˜ ์ง‘ํ•ฉ words๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทœ์น™์„ ์ด์šฉํ•˜์—ฌ begin์—์„œ target์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฐ€์žฅ ์งง์€ ๋ณ€ํ™˜ ๊ณผ์ •์„ ์ฐพ์œผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 1. ํ•œ ๋ฒˆ์— ํ•œ ๊ฐœ์˜ ์•ŒํŒŒ๋ฒณ๋งŒ ๋ฐ”๊ฟ€ ์ˆ˜

programmers.co.kr

 

๋ฐ˜์‘ํ˜•