https://www.acmicpc.net/problem/1012
1012번: 유기농 배추
차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에
www.acmicpc.net
import Foundation
var testCaseCount = Int(readLine()!)!
for _ in 1...testCaseCount {
solution()
}
func solution() {
let inputs = readLine()!
.components(separatedBy: " ")
.compactMap { Int($0) }
let N = inputs[0]
let M = inputs[1]
let CabbageCount = inputs[2]
var count = 0
var board = Array(repeating: Array(repeating: 0, count: M), count: N)
var visited = Array(repeating: Array(repeating: false, count: M), count: N)
for _ in 1...CabbageCount {
let input = readLine()!
.components(separatedBy: " ")
.compactMap { Int($0) }
let (x, y) = (input.first!, input.last!)
board[x][y] = 1
}
for i in 0..<N {
for j in 0..<M {
if board[i][j] == 1 && !visited[i][j] {
bfs(i, j)
count += 1
}
}
}
print(count)
func bfs(_ i: Int, _ j: Int) {
let dx = [1, -1, 0, 0]
let dy = [0, 0, 1, -1]
visited[i][j] = true
var queue = [(i, j)]
while !queue.isEmpty {
let (x, y) = queue.removeFirst()
for i in 0..<4 {
let nx = x + dx[i]
let ny = y + dy[i]
if nx < 0 || nx >= N || ny < 0 || ny >= M { continue }
if visited[nx][ny] || board[nx][ny] == 0 { continue }
visited[nx][ny] = true
queue.append((nx, ny))
}
}
}
}
'백준 > 실버' 카테고리의 다른 글
[Swift] 2583번 : 영역 구하기 (0) | 2024.03.18 |
---|---|
[Swift] 7672번 : 나이트의 이동 (0) | 2024.03.18 |
[Swift] 1697번 : 숨바꼭질 (0) | 2024.03.18 |
[Swift] 2178번 : 미로탐색 (0) | 2024.02.05 |
[Swift] 1926번 : 그림 (0) | 2024.02.05 |