새소식

인기 검색어

백준/실버

[Swift] 1012번 : 유기농 배추

  • -

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
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.