ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿ–ฅ ๋ฌธ์ œ

๋„คํŠธ์›Œํฌ๋ž€ ์ปดํ“จํ„ฐ ์ƒํ˜ธ ๊ฐ„์— ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฐ๊ฒฐ๋œ ํ˜•ํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ปดํ“จํ„ฐ A์™€ ์ปดํ“จํ„ฐ B๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๊ณ , ์ปดํ“จํ„ฐ B์™€ ์ปดํ“จํ„ฐ C๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์„ ๋•Œ ์ปดํ“จํ„ฐ A์™€ ์ปดํ“จํ„ฐ C๋„ ๊ฐ„์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ปดํ“จํ„ฐ A, B, C๋Š” ๋ชจ๋‘ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ์ƒ์— ์žˆ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ปดํ“จํ„ฐ์˜ ๊ฐœ์ˆ˜ n, ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด 2์ฐจ์› ๋ฐฐ์—ด computers๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋„คํŠธ์›Œํฌ์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์‹œ์˜ค.

๐Ÿค” ํ’€์ด ๋ฐฉ๋ฒ•

์ƒ๊ฐํ•ด๋ณด์ž.

  • [[1, 1, 0], [1, 1, 0], [0, 0, 1]]
    • 0๋ฒˆ๊ณผ 0๋ฒˆ, 1๋ฒˆ์ด ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋‹ค.
    • 1๋ฒˆ๊ณผ 0๋ฒˆ, 1๋ฒˆ์ด ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋‹ค.
    • 2๋ฒˆ๊ณผ 2๋ฒˆ์ด ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋‹ค.
    • 0-1, 2์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ 2๊ฐœ์˜ ๋„คํŠธ์›Œํฌ๊ฐ€ ์žˆ๋‹ค.
  • [[1, 1, 0], [1, 1, 1], [0, 1, 1]]
    • 0๋ฒˆ๊ณผ 0๋ฒˆ, 1๋ฒˆ์ด ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋‹ค.
    • 1๋ฒˆ๊ณผ 0๋ฒˆ, 1๋ฒˆ, 2๋ฒˆ์ด ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋‹ค.
    • 2๋ฒˆ๊ณผ 1๋ฒˆ, 2๋ฒˆ์ด ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋‹ค.
    • 0-1-2์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ 1๊ฐœ์˜ ๋„คํŠธ์›Œํฌ๊ฐ€ ์žˆ๋‹ค.

๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰์ด๋ž€ ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๋‹ค์Œ ๋ธŒ๋žœ์น˜๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์ „์— ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

0๋ฒˆ ๋…ธ๋“œ๋ถ€ํ„ฐ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•œ๋‹ค. ์ด๋•Œ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜๋Š” ๋…ธ๋“œ๋Š” ์ „์— ๋ฐฉ๋ฌธ๋œ ์ ์ด ์—†๋Š” ๋…ธ๋“œ์—ฌ์•ผ ํ•œ๋‹ค.

  1. ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•˜๋ฉด ๋จผ์ € ๋ฐฉ๋ฌธ ์ฒดํฌ๋ฅผ ํ•œ๋‹ค.
  2. ํ•ด๋‹น ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๊ฐ€ ์žˆ๊ณ  ๊ทธ ๋…ธ๋“œ๊ฐ€ ์ „์— ๋ฐฉ๋ฌธ๋œ ์ ์ด ์—†๋‹ค๋ฉด ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•œ๋‹ค.

์œ„ 1, 2์˜ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋‹ค ๋” ์ด์ƒ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฉด ๋ฆฌํ„ดํ•œ๋‹ค.
์—ฐ๊ฒฐ๋œ ํ•˜๋‚˜์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ๋‹ค ํƒ์ƒ‰ํ–ˆ๋‹ค. ๋„คํŠธ์›Œํฌ์˜ ๊ฐœ์ˆ˜์ธ answer์„ +1 ํ•ด์ค€๋‹ค.

๋ฐฉ๋ฌธ๋˜์ง€ ์•Š์€ ๋…ธ๋“œ๋ถ€ํ„ฐ ๋‹ค์‹œ ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•œ๋‹ค.

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป Swift Code

import Foundation

func solution(_ n:Int, _ computers:[[Int]]) -> Int {
    var answer = 0
    var visit = Array(repeating: false, count: n)

    for node in 0..<n where !visit[node] {
        dfs(n, computers, node, &visit)
        answer += 1
    }

    return answer
}

func dfs(_ n: Int, _ computers: [[Int]], _ node: Int, _ visit: inout [Bool]) {
    visit[node] = true
    for i in 0..<n where computers[node][i] == 1 {
        let targetNode = computers[node][i]
        if !visit[i] {
            dfs(n, computers, i, &visit)
        }
    }
}

 

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋„คํŠธ์›Œํฌ

๋„คํŠธ์›Œํฌ๋ž€ ์ปดํ“จํ„ฐ ์ƒํ˜ธ ๊ฐ„์— ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฐ๊ฒฐ๋œ ํ˜•ํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ปดํ“จํ„ฐ A์™€ ์ปดํ“จํ„ฐ B๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๊ณ , ์ปดํ“จํ„ฐ B์™€ ์ปดํ“จํ„ฐ C๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ

programmers.co.kr

 

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2025/04   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
๊ธ€ ๋ณด๊ด€ํ•จ