Skip to content

Commit c90945b

Browse files
committed
Park walk / 중급
1 parent 419bb0f commit c90945b

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

bona1122/[week3]Queue/Park_walk.js

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// https://school.programmers.co.kr/learn/courses/30/lessons/172928
2+
3+
function solution(park, routes) {
4+
let answer;
5+
for (let i = 0; i < park.length; i++) {
6+
for (let j = 0; j < park[i].length; j++) {
7+
if (park[i][j] === "S") {
8+
answer = [i, j];
9+
break;
10+
}
11+
}
12+
}
13+
14+
const [row, col] = [park.length, park[0].length];
15+
const map = {
16+
E: [0, 1],
17+
W: [0, -1],
18+
N: [-1, 0],
19+
S: [1, 0],
20+
};
21+
22+
for (let route of routes) {
23+
const [op, n] = route.split(" ");
24+
const [dx, dy] = map[op];
25+
const [x, y] = answer;
26+
const newX = x + dx * Number(n);
27+
const newY = y + dy * Number(n);
28+
29+
// 다음 위치가 공원을 벗어나는지 체크
30+
if (newX < 0 || newX >= row || newY < 0 || newY >= col) continue;
31+
32+
// 장애물 체크
33+
let isBlocked = false;
34+
for (let i = 1; i <= Number(n); i++) {
35+
const checkX = x + dx * i;
36+
const checkY = y + dy * i;
37+
if (park[checkX][checkY] === "X") {
38+
isBlocked = true;
39+
break;
40+
}
41+
}
42+
43+
if (!isBlocked) {
44+
answer = [newX, newY];
45+
}
46+
}
47+
48+
return answer;
49+
}

0 commit comments

Comments
 (0)