프로그래머스

[프로그래머스][Kotlin] 공원 산책

끝까지 처음처럼 2023. 3. 23. 23:46
728x90

해당 문제는 바둑판 배열이 나오는 문제를 많이 풀어봤다면 쉽게 풀 수있는 문제였습니다. 

상하좌우 이동을 계산할때는 IntArray(0,0,-1,1),IntArray(-1,1,0,0) 두개의 배열을 선언하여 

반복묵을 통하여 쉽게 해결 할 수 있습니다. 이것을 동서남북으로 하였을 경우에는 

IntArray(-1,0),IntArray(1,0),IntArray(0,-1),IntArray(0,1) 로 선언하여 원하는 방향을 지정 할 수도 있습니다.

 

하기는 제가 작성한 코드와 실행 결과 입니다.

class Solution {
    fun solution(park: Array<String>, routes: Array<String>): IntArray {
        var answer: IntArray = intArrayOf(0,0)
        var order = HashMap<String,IntArray>()
        order.put("N", intArrayOf(-1,0))
        order.put("S", intArrayOf(1,0))
        order.put("W", intArrayOf(0,-1))
        order.put("E", intArrayOf(0,1))

        for(i in 0 .. park.size-1){
            for(j in 0 .. park[i].length-1){
                if(park[i][j] == 'S'){
                    answer = intArrayOf(i,j)
                }
            }
        }
        routes.forEach {
            var move = order[it.split(" ")[0]] //방향
            var count = it.split(" ")[1].toInt() // 이동 횟수
            var nr = answer[0]
            var nc = answer[1]

            for(i in 1 .. count){
                nr += move!![0]
                nc += move!![1]
                if(nr < 0 || nc < 0 || nr >= park.size || nc >= park[0].length || park[nr][nc] == 'X'){
                    nr = answer[0]
                    nc = answer[1]
                    break
                }
            }
            answer[0] = nr
            answer[1] = nc
        }

        return answer
    }
}
테스트 1 통과 (6.96ms, 60.2MB)
테스트 2 통과 (7.13ms, 62.2MB)
테스트 3 통과 (9.41ms, 60.3MB)
테스트 4 통과 (7.42ms, 60.4MB)
테스트 5 통과 (10.27ms, 59.6MB)
테스트 6 통과 (11.15ms, 60.2MB)
테스트 7 통과 (8.70ms, 61.8MB)
테스트 8 통과 (9.72ms, 61MB)
테스트 9 통과 (9.54ms, 60.7MB)
테스트 10 통과 (7.45ms, 61.5MB)
테스트 11 통과 (7.49ms, 61.9MB)
테스트 12 통과 (7.50ms, 62MB)
테스트 13 통과 (8.67ms, 60.7MB)
테스트 14 통과 (8.49ms, 62.2MB)
테스트 15 통과 (7.14ms, 62.9MB)
테스트 16 통과 (7.44ms, 60.4MB)
테스트 17 통과 (7.64ms, 60.9MB)
테스트 18 통과 (8.50ms, 60.8MB)
테스트 19 통과 (10.53ms, 61.3MB)
테스트 20 통과 (7.50ms, 61.4MB)