알고리즘

릿코드 2373. Largest Local Values in a Matrix 코틀린

rkrkrr0101 2024. 5. 12. 11:54

n-2짜리 최대풀링층을 만들어라
그냥 3x3윈도우 만들고,해당윈도우 가로로 끝까지 밀고,세로로 밀고 하면될듯


정답

class Solution {
    fun largestLocal(grid: Array<IntArray>): Array<IntArray> {
        val len=grid.size
        val resList=mutableListOf<IntArray>()
        for (i in 0 until len) {
            val rowList= mutableListOf<Int>()
            for (j in 0 until len) {
                if (!isValid(grid, i, j)){
                    continue
                }
                val tempList=mutableListOf<Int>()
                tempList.add(grid[i-1][j+1])
                tempList.add(grid[i][j+1])
                tempList.add(grid[i+1][j+1])
                tempList.add(grid[i-1][j])
                tempList.add(grid[i][j])
                tempList.add(grid[i+1][j])
                tempList.add(grid[i-1][j-1])
                tempList.add(grid[i][j-1])
                tempList.add(grid[i+1][j-1])
                rowList.add(tempList.max())
            }
            if (rowList.isNotEmpty()) {
                resList.add(rowList.toIntArray())
            }

        }
        return resList.toTypedArray()


    }
    private fun isValid(grid: Array<IntArray>,i:Int,j:Int): Boolean {
        val len=grid.size
        if (i+1>=len) {return false}
        if (i-1<0) {return false}
        if (j+1>=len) {return false}
        if (j-1<0) {return false}
        return true

    }
}