KotlinAlgorithm#13 (POG 공원 산책)

박채빈·2023년 7월 12일
0

KotlinAlgorithm

목록 보기
13/28
post-thumbnail

POG 공원 산책

링크

// 사진 첨부 예정

코드

class Solution {
    fun solution(park: Array<String>, routes: Array<String>): IntArray {
        var y = park.indexOfFirst { it.contains('S') }
        var x = park[y].indexOf('S')

        routes.forEach { route ->
            val sep = route.split(" ")
            val direction = sep[0]
            val distance = sep[1].toInt()

            when (direction) {
                // 열 이동
                "S" ->  if (checkY(park, y, y+distance, x)) y += distance
                "N" ->  if (checkY(park, y-distance, y, x)) y -= distance
                // 행 이동
                "E" ->  if (checkX(park, x, x+distance, y))  x += distance
                "W" ->  if (checkX(park, x-distance, x, y))  x -= distance
            }
        }

        return intArrayOf(y, x)
    }

    private fun checkX(park: Array<String>, startX: Int, targetX: Int, y: Int) = startX >= 0 && targetX < park[0].length && (startX .. targetX).all { x -> park[y][x] != 'X' }

    private fun checkY(park: Array<String>, startY: Int, targetY: Int, x: Int) = startY >= 0 && targetY < park.size && (startY .. targetY).all { y -> park[y][x] != 'X' }
}

checkX, checkY의 조건식을 and 연산 할 때, 각 피연산자를 변수로 설정 시 컴파일 에러 발생. 이유 모름

profile
안드로이드 개발자

0개의 댓글