MUKER_DEV with iOS

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

๐Ÿค– ์•Œ๊ณ ๋ฆฌ์ฆ˜/programmers

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

MUKER 2023. 3. 24. 01:24
 

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

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

programmers.co.kr


๋‚˜์˜ ํ’€์ด

var computer = [[Int]]()
var visited = [Bool]()

func solution(_ n:Int, _ computers:[[Int]]) -> Int {
    computer = computers
    visited = Array(repeating: false, count: n)
    var answer = 0
    for i in 0..<n {
        if !visited[i] {
            dfs(i)
            answer += 1
        }
    }
    return answer
}

func dfs(_ now: Int) {
    if visited[now] { return }
    visited[now] = true
    for i in 0..<computer.count {
        if computer[now][i] == 1 { dfs(i) }
    }
}

ํ’€์ด ํ‚ค์›Œ๋“œ

DFS
๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰์„ ์žฌ๊ท€ํ•จ์ˆ˜๋กœ ํ‘ผ ํ’€์ด๋‹ค.
dfs()ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ ๋•Œ ์žฌ๊ท€ํ•จ์ˆ˜์˜ ํŠน์„ฑ์œผ๋กœ
์ด์–ด์ง„ ์ปดํ“จํ„ฐ๊นŒ์ง€ visited๋ฐฐ์—ด์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์—
solution()ํ•จ์ˆ˜์—์„œ ๋ฐ˜๋ณต๋ฌธ์ด ๋Œ ๋•Œ ๋ฏธ๋ฆฌ ๋ฐฉ๋ฌธํ•œ computer๋Š” if์กฐ๊ฑด์— ํ•ด๋‹น๋˜์ง€ ์•Š๋Š”๋‹ค.
๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ด๋„คํŠธ์›Œํฌ์˜ ๊ฐœ์ˆ˜๋ฅผ ์…€ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.