반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 "프로그래머스(Lv.3) - 네트워크" 문제를 풀었습니다.
Github
문제 링크
풀이
이번 문제는 그래프 탐색 문제입니다.
그래프의 개수를 세면 되는 문제인데요.
첫 레벨 3의 문제였는데 쉬워서 불안했던 문제였습니다.
이 문제가 편했던 점은 그래프가 input으로 주어진다는 점입니다.
주어진 computers를 그래프로 이용하고 visited를 하나씩 체크하며 dfs를 실행하면 됩니다.
그래프의 개수를 센 뒤 return 해주면 통과가 가능합니다!
3단계가 다 이 문제 같으면 너무 좋겠습니다... ㅠㅠ
전체 코드
import Foundation
func solution(_ n:Int, _ computers:[[Int]]) -> Int {
//dfs
var stack: [Int] = []
var visited: [Bool] = Array(repeating: false, count: n)
var result = 0
for i in 0..<n {
if !visited[i] {
result += 1 //네트워크 카운트
stack.append(i)
while !stack.isEmpty {
let top = stack.popLast()!
visited[top] = true
for j in 0..<n {
if j != top && computers[top][j] == 1 && !visited[j] {
stack.append(j)
}
}
}
}
}
return result
}
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형