티스토리 뷰

PS

[Swift] 프로그래머스_네트워크

희철 2023. 1. 26. 16:38

문제

 

https://school.programmers.co.kr/learn/courses/30/lessons/43162?language=swift 

 

프로그래머스

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

programmers.co.kr

 

 

풀이

 

BFS를 이용해 간단하게 해결할 수 있었다.

 

컴퓨터를 하나씩 확인해가며 연결된 컴퓨터가 있다면 방문표시를 해준 뒤에 큐에 넣어준다. 하나의 컴퓨터가 확인이 끝나면 큐에 들어있는 다른 컴퓨터를 이어서 확인해주면 된다.

import Foundation

func solution(_ n:Int, _ computers:[[Int]]) -> Int {

    var result = 0
    var visited = Array(repeating: false, count: n)
    var queue: [Int] = []
    
    for i in 0..<n {
        if visited[i] {
            continue
        }
        result += 1
        queue.append(i)
        visited[i] = true
        var idx = 0
        while idx < queue.count {
            let current = queue[idx]
            idx += 1
            for j in 0..<n {
                if computers[current][j] == 1 && !visited[j] {
                    queue.append(j)
                    visited[j] = true    
                }
            }
        }
    }
    return result
}

 

 

_____________________________________________________________________________________________________

 

 

예전에는 어떻게 풀어야할지 몰랐던 문제인데 bfs문제들을 많이 풀어보니 쉽게 풀 수 있었다. 

댓글
최근에 올라온 글
Total
Today
Yesterday