새소식

인기 검색어

백준/실버

[Swift] 1926번 : 그림

  • -
import Foundation

var inputs = readLine()!.components(separatedBy: " ").compactMap { Int($0) }
let row = inputs.first!
let col = inputs.last!

let dx = [1, 0, -1, 0]
let dy = [0, 1, 0, -1]

var mx = 0
var num = 0
var boards: [[Bool]] = []

for _ in 0..<row {
    let inputs: [Bool] = readLine()!.components(separatedBy: " ").map { $0 == "1" }
    boards.append(inputs)
}

for i in 0..<row {
    for j in 0..<col {
        if !boards[i][j] { continue }
        num += 1
        mx = max(mx, bfs(i, j))
    }
}

print(num)
print(mx)



func bfs(_ i: Int, _ j: Int) -> Int {
    var area = 0
    var queue: [(Int, Int)] = []
    
    boards[i][j] = false
    queue.append((i,j))
    
    while !queue.isEmpty {
        area += 1
        let (x, y) = queue.removeFirst()
        for i in 0..<4 {
            let nx = x + dx[i]
            let ny = y + dy[i]
            
            if (nx < 0 || row <= nx || ny < 0 || col <= ny) || !boards[nx][ny] { continue }
            
            boards[nx][ny] = false
            queue.append((nx, ny))
        }
    }
    
    return area
}

'백준 > 실버' 카테고리의 다른 글

[Swift] 7672번 : 나이트의 이동  (0) 2024.03.18
[Swift] 1012번 : 유기농 배추  (0) 2024.03.18
[Swift] 1697번 : 숨바꼭질  (0) 2024.03.18
[Swift] 2178번 : 미로탐색  (0) 2024.02.05
[Swift] 10773번 : 제로  (0) 2024.01.12
Contents

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

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