Uknow's Lab.
article thumbnail

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

 

2563번: 색종이

가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록

www.acmicpc.net

 

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

 

 

설명

도화지 위에 색종이를 붙였을 때, 색종이의 전체 크기를 출력하는 문제입니다.

어떻게 풀까 고민을 좀 해봤는데,

도화지의 가로, 세로의 크기가 100밖에 되지 않는 것을 보고

그냥 100 x 100인 2차원 boolean 배열을 만든 뒤,

색종이로 덮인 부분을 true로 처리하여

최종적으로 true인 부분의 개수만 카운팅하여 출력하면 될 것 같습니다.

 

 

 

소스코드

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 } })
}

 

 

 

후기

어떻게 해야하나 고민을 좀 했었는데,

그냥 배열 하나 선언해두고, 덮인 부분은 그냥 true 처리할까?라는 생각이 들었고,

범위를 보고 확신했습니다.

profile

Uknow's Lab.

@유노 Uknow

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