Uknow's Lab.
article thumbnail

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

 

2563번: 색종이

첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변

www.acmicpc.net

 

난이도 : 실버 5
태그 : 구현

 

 

설명

처음에는 어떻게 접근할지 고민하다가,

가로 / 세로 크기가 100씩 밖에 되지 않는 작은 범위인 것을 보고,

그냥 2차원 배열 하나 생성해서 색종이로 덮여진 부분만 체크하고,

색종이로 덮인 부분을 카운트해 출력하면 되더군요.

 

 

소스코드

fun main() = with(System.`in`.bufferedReader()) {
    val n = readLine().toInt()

    val map = Array(101) { Array(101) { false } }

    repeat(n) {
        val (p1, p2) = readLine().split(" ").map { it.toInt() }

        repeat(10) { dx ->
            repeat(10) { dy ->
                map[p1 + dx][p2 + dy] = true
            }
        }
    }

    println(map.sumOf { it.count { it } })
}

 

map.sunOf { it.count { it } }) 맵에서 true(색종이로 덮인) 부분을 카운트하는 부분입니다.

profile

Uknow's Lab.

@유노 Uknow

인생은 Byte와 Double 사이 Char다. 아무말이나 해봤습니다.