[백준] 투명 (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
}
)