ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ๋„คํŠธ์›Œํฌ

2024. 7. 13. 22:24ยท๐Ÿ”’Algorithm

๐Ÿ”ฅ๋ฌธ์ œ๋งํฌ

https://school.programmers.co.kr/learn/courses/30/lessons/43162

 

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

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๐Ÿ”ฅํ’€์ด ํ•ต์‹ฌ

์ œ๋ชฉ ์˜†์—๋„ ํ‘œ์‹œ ๋˜์—ˆ๋“ฏ์ด ํ’€์ด์˜ ํ•ต์‹ฌ์€ DFS ๋กœ ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ์ปดํ“จํ„ฐ๋“ค์„ ๋‹ค ํƒ€๊ณ  ๋“ค์–ด๊ฐ€ ํ•˜๋‚˜์˜ ๋„คํŠธ์›Œํฌ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ๋Š” ๋™์‹œ ๋“ค๋ €๋˜ ์ปดํ“จํ„ฐ๋Š” ์ฒดํฌํ•˜์—ฌ ํ•ด๋‹น ์ปดํ“จํ„ฐ๋Š” ๋‹ค์‹œ ๋“ค๋ฆฌ์ง€ ์•Š๋Š” ๊ฒƒ ์ด๋‹ค.  

 

๐Ÿ”ฅ์ฒซ๋ฒˆ์งธ ๋‚ด ํ’€์ด

๋‚ด๊ฐ€ ์ฒ˜์Œ์— ์ƒ๊ฐํ•œ ๋‚ดํ’€์ด๋Š” ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง„ ์•Š์•˜๋‹ค. ํ•˜์ง€๋งŒ ์žฌ๊ท€ํ•จ์ˆ˜์˜ ๋™์ž‘์„ ํ(queue)์™€ while์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•˜์˜€๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์ •๋‹ต ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ค์‹œ ํ’€์–ด ๋ณด์•˜๋Š”๋ฐ ๊ทธ ์ฝ”๋“œ๋Š” ๋‘๋ฒˆ์งธ ํ’€์ด์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

function solution(n, computers) {
    let networks = []
    let visited = Array(n).fill(0)
    
    for(let i=0; i<=n-1; ++i){
        // ์•ˆ๋“ค๋ ธ์œผ๋ฉด ๋“ค๋ฆฐ๋‹ค.
        if(!visited[i]){
            let toVisit = [i]
            let group = [i]
            while(toVisit.length){
                let pick = toVisit.shift()
                visited[pick] = 1
                computers[pick].forEach((state,com_idx)=>{
                    if(state===1 && !group.includes(com_idx)){
                        toVisit.push(com_idx)
                        group.push(com_idx)
                    }
                })
            }
            networks.push(group)
        }   
    }
    return networks.length
    
}

 

๐Ÿ”ฅ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ๋‹ค๋ฅธ ํ’€์ด

์žฌ๊ท€๋กœ ํ‘ผ ํ’€์ด๊ฐ€ ์ฝ”๋“œ๊ฐ€ ์กฐ๊ธˆ ๋” ์งง์€ ๊ฒƒ ๊ฐ™๊ธดํ•˜๋‹ค. ์žฌ๊ท€๋กœ ํ’€๋“  ํ’€์ง€ ์•Š๋“  ์ค‘์š”ํ•œ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ํ•˜๋‚˜์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํ˜•์„ฑํ•˜๋Š” ์ปดํ“จํ„ฐ๋“ค์„ ํ•œ๋ฒˆ์— ์ฒดํฌํ•ด์•ผ ํ•˜๊ณ  ์ด๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ํ’€์ด๋ฅผ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. 

 

function solution(n, computers) {
    let answer = 0
    let visited = Array(n).fill(0)
    
    const dfs =(com_index)=>{
        if(visited[com_index]){
            return 0
        }
        
        visited[com_index] = 1 // ๋“ค๋ €๋‹ค๊ณ  ํ‘œ๊ธฐ
        computers[com_index].forEach((isConnected,i)=>{
            // ์—ฐ๊ฒฐ๋˜์—ˆ์œผ๋ฉด
            if(isConnected){
                dfs(i)
            }
        })        
        return 1
    }

    for(let i=0; i<=n-1; i++){
        answer+=dfs(i)    
    }
    
    return answer
}

 

 

 

 

'๐Ÿ”’Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ๊ฒน์น˜๋Š” ์„ ๋ถ„์˜ ๊ธธ์ด  (0) 2024.07.20
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ์ฟผ๋“œ์••์ถ• ํ›„ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ  (0) 2024.07.15
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค [JS] > ์†Œ์ˆ˜์ฐพ๊ธฐ  (0) 2024.07.07
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (JS) > ๊ฐ€์žฅ ํฐ์ˆ˜  (0) 2024.07.04
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ํƒ๋ฐฐ์ƒ์ž  (0) 2024.06.29
'๐Ÿ”’Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ๊ฒน์น˜๋Š” ์„ ๋ถ„์˜ ๊ธธ์ด
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ์ฟผ๋“œ์••์ถ• ํ›„ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค [JS] > ์†Œ์ˆ˜์ฐพ๊ธฐ
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (JS) > ๊ฐ€์žฅ ํฐ์ˆ˜
devWarrior
devWarrior
  • devWarrior
    devWarrior
    devWarrior
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐ŸงฉDev (263)
      • โญFE (34)
      • ๐Ÿ”’Algorithm (155)
      • โž•Etc. (11)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ๊ธ€์“ฐ๊ธฐ
    • ๊ด€๋ฆฌ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    javascript
    Algorithm
    ์‹ค๋ฒ„4
    ํ”„๋ก ํŠธ์—”๋“œ
    DFS
    ๊ตฌํ˜„
    ์‹ค๋ฒ„2
    Easy
    leetcode
    Lv2
    nodejs
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    dp
    node.js
    BFS
    ์˜ค๋ธ”์™„
    FE
    ์ž์Šค
    ๊ณจ๋“œ5
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
    react
    ๊ทธ๋ฆฌ๋””
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    js
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
    ์ฝ”ํ…Œ
    ๋ฐฑ์ค€
    ์‹ค๋ฒ„3
    ์‹ค๋ฒ„1
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
devWarrior
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ๋„คํŠธ์›Œํฌ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”