문제
프로그래머스 코딩테스트 연습 : 공원 산책
자료구조/알고리즘, 시간복잡도, 소요시간
- 자료구조/알고리즘: -
- 시간 복잡도: O(n)
- 소요 시간: 40분
코드
function move(park, position, route) {
let isMoved = true;
const initializePosition = [position[0], position[1]];
const [direction, count] = route.split(" ");
for(var i = 0; i < count; i++) {
let [current_y, current_x] = position;
switch(direction) {
case 'N' :
if( current_y - 1 < 0 ||
park[current_y - 1].split("")[current_x] === 'X' ) {
isMoved = false;
i = count;
} else {
position[0] = current_y - 1;
}
break;
case 'S' :
if( current_y + 1 >= park.length ||
park[current_y + 1].split("")[current_x] === 'X' ) {
isMoved = false;
i = count;
} else {
position[0] = current_y + 1;
}
break;
case 'W' :
if( current_x - 1 < 0 ||
park[current_y].split("")[current_x - 1] === 'X' ) {
isMoved = false;
i = count;
} else {
position[1] = current_x - 1;
}
break;
case 'E' :
if( current_x + 1 >= park[0].length ||
park[current_y].split("")[current_x + 1] === 'X' ) {
isMoved = false;
i = count;
} else {
position[1] = current_x + 1;
}
break;
}
}
return isMoved ? position : initializePosition ;
}
function solution(park, routes) {
let position = [0,0];
park.forEach((coords, index) => {
if(coords.split("").findIndex((value) => value === "S") !== -1) {
position = [index, coords.split("").findIndex((value) => value === "S")];
}
})
routes.forEach((route) => {
position = move(park, position, route);
})
return position;
}
회고
'코딩테스트' 카테고리의 다른 글
[JS] [PCCP 기출문제] 1번 / 동영상 재생기도움말 (0) | 2024.11.04 |
---|---|
[JS] 과일 장수 (0) | 2024.05.14 |
[JS] 기사단원의 무기 (0) | 2024.05.01 |
[JS] 명예의 전당 (1) (0) | 2024.04.29 |
[JS] 문자열 나누기 (0) | 2024.04.29 |