본문 바로가기

알고리즘/백준 문제풀이

백준 1531 - 투명(Kotlin)

728x90

 

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

 

1531번: 투명

첫째 줄에 N과 M이 주어진다. N은 0보다 크거나 같고, 50보다 작거나 같다. M은 0보다 크거나 같고, 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 종이의 좌표가 주어진다. 왼쪽 아래 모서리의 x, y좌

www.acmicpc.net

문제 접근

이차원 배열에서 주어진 좌표에 해당하는 범위의 수를 수정할 수 있으면 바로 풀리는 문제

 

정답 코드

import java.util.*

fun main(args: Array<String>): Unit = with(Scanner(System.`in`)) {
    val arr = Array(101) { IntArray(101) }
    val n = nextInt()
    val m = nextInt()
    //주어진 범위를 1씩 추가하고 m보다 큰 수들을 보이지 않는 그림들로 취급
   for (a in 0 until n){
        val x1 = nextInt()
        val y1 = nextInt()
        val x2 = nextInt()
        val y2 = nextInt()
        for (i in x1..x2) {
            for (j in y1..y2) {
                arr[i][j] += 1 // 가릴때마다 1씩 증가시키기
            }
        }
    }
    var ans = 0
    for (i in 1..100) {
        for (j in 1..100) {
            if (arr[i][j] > m)
            ans++
        }
    }
    print(ans)


}