File tree Expand file tree Collapse file tree 1 file changed +49
-0
lines changed
Expand file tree Collapse file tree 1 file changed +49
-0
lines changed Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments