경험의 기록

문제 : www.acmicpc.net/problem/1012

 

1012번: 유기농 배추

차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 

www.acmicpc.net

 

 

import java.util.*

var m = 0 // 가로길이
var n = 0 // 세로길이
var k = 0 // 배추 개수
var count = 0 // 마리 수

// 상하좌우
val dx = listOf(-1,1,0,0)
val dy = listOf(0,0,-1,1)

lateinit var arr : Array<Array<Int>>

fun main() = with(Scanner(System.`in`)){

    val t = nextInt() // 테스트 케이스 개수

    for(i in 0 until t){
        count = 0
        m = nextInt()
        n = nextInt()
        k = nextInt()
        arr = Array(m){Array<Int>(n){0} }

        for(j in 0 until k){
            arr[nextInt()][nextInt()] = 1
        }

        // 다 방문할때까지 반복
        for(x in 0 until m){
            for(y in 0 until n){
                // 떨어져있는곳 방문할때마다 +1
                if(arr[x][y] == 1) {
                    find(x,y)
                    count++
                }
            }
        }
        println(count)
    }
}

fun find(x : Int, y : Int){
    for(i in 0 until 4){
        val nx = x + dx[i]
        val ny = y + dy[i]
        
        // 상하좌우를 탐색하여 인접한 곳 방문 체크
        if(nx >= 0 && ny >= 0 && nx < m && ny < n){
            if(arr[nx][ny] == 1){
                arr[nx][ny] = 0
                find(nx,ny)
            }
        }
    }
}


 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading