[백준] 투명 (1531)

문제 설명

백준 1531번 문제 링크

입력 및 출력

» 입력

첫째 줄에 N과 M이 주어진다. N은 0보다 크거나 같고, 50보다 작거나 같다. M은 0보다 크거나 같고, 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 종이의 좌표가 주어진다. 왼쪽 아래 모서리의 x, y좌표, 오른쪽 위 모서리의 x, y좌표 순으로 주어진다. 모든 좌표는 100보다 작거나 같은 자연수이다.

» 출력

첫째 줄에 정답을 출력한다.

예제 입출력(테스트케이스)

입력 출력
3 1
21 21 80 80
41 41 60 60
71 71 90 90
500

문제 풀이 (KOTLIN)

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    val (N, M) = readLine().split(" ").map { it.toInt() }
    val check = Array(101) { IntArray(101) { 0 }  }

    repeat(N) {
        val (startX, startY, endX, endY) = readLine().split(" ").map { it.toInt() }

        for (x in startX .. endX)
            for (y in startY .. endY)
                check[y][x]++
    }

    println(
        check.sumOf {
            it.count { t -> t > M }
        }
    )
}

문제 풀이 (swift)

let NM = readLine()!.split(separator: " ").map{ Int($0)! }
var picture = Array(repeating: Array(repeating: 0, count: 100), count: 100)

for _ in 0..<NM[0] {
    let locs = readLine()!.split(separator: " ").map{ Int($0)! }
    
    for x in locs[0]...locs[2] {
        for y in locs[1]...locs[3] {
            picture[x - 1][y - 1] += 1
        }
    }
}

print(
    picture.reduce(0) { (sum: Int, arr: [Int]) -> Int in
        return sum + arr.filter { (pixel: Int) -> Bool in
            return pixel > NM[1]
        }.count
    }
)


태그:

카테고리:

업데이트: