[백준] 1012: 유기농 배추 - kotlin

kldaji·2021년 11월 5일
0

백준문제풀이

목록 보기
29/35

문제

https://www.acmicpc.net/problem/1012

풀이

  • DFS
  • x, y 좌표 주의!
fun dfs(land: Array<Array<Int>>, x: Int, y: Int, m: Int, n: Int) {
    val dx = listOf(1, -1, 0, 0)
    val dy = listOf(0, 0, 1, -1)
    for (i in 0..3) {
        val nx = x + dx[i]
        val ny = y + dy[i]
        if (nx in 0 until m && ny in 0 until n && land[ny][nx] == 1) {
            land[ny][nx] = 0
            dfs(land, nx, ny, m, n)
        }
    }
}

fun main() {
    val br = System.`in`.bufferedReader()
    val bw = System.out.bufferedWriter()
    val t = br.readLine().toInt()
    repeat(t) {
        val (m, n, k) = br.readLine().split(" ").map { it.toInt() }
        val land = Array(n) { Array(m) { 0 } }
        var earthworm = 0
        repeat(k) {
            // x : 가로, y: 세로
            val (x, y) = br.readLine().split(" ").map { it.toInt() }
            land[y][x] = 1
        }
        for (i in 0 until n) {
            for (j in 0 until m) {
                if (land[i][j] == 1) {
                    earthworm++
                    land[i][j] = 0
                    dfs(land, j, i, m, n)
                }
            }
        }
        bw.write("$earthworm\n")
    }
    br.close()
    bw.close()
}

더 좋은 방법 있으면 댓글 달아주세요!!!

profile
다양한 관점에서 다양한 방법으로 문제 해결을 지향하는 안드로이드 개발자 입니다.

0개의 댓글