프로그래머스
[프로그래머스][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) |