Algorithm

Algorithm) Programmers- 네트워크 swift

행복하고 싶은 사람 2022. 11. 30. 13:11

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

dfs/ bfs문제였습니다

level3 치고는 쉬운 문제네요

 

for문 돌면서 방문 안한곳이 있으면 방문하고 dfs 시작

dfs가 돌면서 연결되어 있는곳은 모두 방문하니 for문에서 dfs로 들어간 횟수만큼 네트워크가 존재합니다! 

import Foundation

func dfs(_ com: Int,_ computers:[[Int]], _ visited: inout [Bool]) {
    for i in 0..<computers[com].count {
        if visited[i] == false && computers[com][i] == 1 {
            visited[i] = true
            print(i)
            dfs(i, computers, &visited)
        }
    }
}

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