본문 바로가기

코딩 테스트/Lv.1

[프로그래머스] 바탕화면 정리 with Kotlin

문제

바탕화면 아이콘("#")을 최소로 드래그할 수 있는 S좌표부터 E좌표의 값을 각각 배열에 넣어 반환하는 문제

 

풀이 과정

  • S는 기존 배열의 인덱스와 같다.
  • E는 기존 배열의 인덱스 + 1 이다.
  • S는 "#"이 들어있는 인덱스 중 x가 가장 적은 인덱스의 x와 y가 가장 적은 인덱스의 y를 조합
  • E는 반대

 

코드

import kotlin.math.*
class Solution {
    fun solution(wallpaper: Array<String>): IntArray {
        val saveX = ArrayList<Int>()
        val saveY = ArrayList<Int>()
        
        for(x in wallpaper.indices){
            for(y in wallpaper[x].indices){
                if(wallpaper[x][y] == '#') {
                    saveX.add(x)
                    saveY.add(y)
                }
            }
        }
        val (lux, luy) = arrayOf(saveX.minOf{it}, saveY.minOf{it})
        val (rdx, rdy) = arrayOf(saveX.maxOf{it}+1, saveY.maxOf{it}+1)
        
        return intArrayOf(lux, luy, rdx, rdy)
    }
}