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문제들을 많이 풀어보니 쉽게 풀 수 있었다.