백준 [14658] kotlin

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

 

14658번: 하늘에서 별똥별이 빗발친다

첫째 줄에 네 정수 N, M, L, K가 주어진다. (1 ≤ N, M ≤ 500,000, 1 ≤ L ≤ 100,000, 1 ≤ K ≤ 100) N은 별똥별이 떨어지는 구역의 가로길이, M은 세로길이, L은 트램펄린의 한 변의 길이, K는 별똥별의 수를

www.acmicpc.net

 

[풀이]

처음에는 4가지 방향으로 체크를 하여 풀려고 했으나.

틀렸다. 그 이유는

   *

*    *

   *

위와 같은 경우를 고려하지 않았기 때문이다.

그래서 두 지점을 공유하도록 하여서 풀었다.

 

[코드]

import kotlin.math.max

var N = 0
var M = 0
var L = 0
var K = 0

lateinit var star : ArrayList<coordinate>
data class coordinate(val x : Int, val y : Int)
fun main()
{
    var tmp = readLine()!!.split(" ").map {it.toInt()}
    N = tmp[0]
    M = tmp[1]
    L = tmp[2]
    K = tmp[3]

    star = ArrayList()
    var ans = 0
    repeat(K)
    {
        i ->
        var tmp = readLine()!!.split(" ").map {it.toInt()}
        star.add(coordinate(tmp[0], tmp[1]))
    }

    for(i in 0 until K)
    {
        for(j in 0 until K)
        {
            var cnt = 0
            for(k in 0 until  K)
            {
                val x = star[i].x
                val y = star[j].y
                if(star[k].x in x..x+L && star[k].y in y..y+L) cnt++
            }
            ans = max(ans, cnt)
        }
    }
    println(K - ans)
}

'백준 > 기타' 카테고리의 다른 글

백준 [9935] kotlin  (0) 2023.01.19
백준 [1043] kotlin  (0) 2023.01.13
백준 [12919] kotlin  (0) 2023.01.08
백준 14719 [kotlin]  (0) 2022.07.06
백준 1038 [kotlin]  (0) 2022.07.06