
1. โ ๋ฌธ์
1.0.1. ๋ฌธ์ ์ค๋ช
์ง๋๋ค๋๋ ๊ธธ์ 'O', ์ฅ์ ๋ฌผ์ 'X'๋ก ๋ํ๋ธ ์ง์ฌ๊ฐํ ๊ฒฉ์ ๋ชจ์์ ๊ณต์์์ ๋ก๋ด ๊ฐ์์ง๊ฐ ์ฐ์ฑ ์ ํ๋ คํฉ๋๋ค. ์ฐ์ฑ ์ ๋ก๋ด ๊ฐ์์ง์ ๋ฏธ๋ฆฌ ์ ๋ ฅ๋ ๋ช ๋ น์ ๋ฐ๋ผ ์งํํ๋ฉฐ, ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ ํ์์ผ๋ก ์ฃผ์ด์ง๋๋ค.
["๋ฐฉํฅ ๊ฑฐ๋ฆฌ", "๋ฐฉํฅ ๊ฑฐ๋ฆฌ" โฆ ]
์๋ฅผ ๋ค์ด "E 5"๋ ๋ก๋ด ๊ฐ์์ง๊ฐ ํ์ฌ ์์น์์ ๋์ชฝ์ผ๋ก 5์นธ ์ด๋ํ๋ค๋ ์๋ฏธ์ ๋๋ค. ๋ก๋ด ๊ฐ์์ง๋ ๋ช ๋ น์ ์ํํ๊ธฐ ์ ์ ๋ค์ ๋ ๊ฐ์ง๋ฅผ ๋จผ์ ํ์ธํฉ๋๋ค.
์ฃผ์ด์ง ๋ฐฉํฅ์ผ๋ก ์ด๋ํ ๋ ๊ณต์์ ๋ฒ์ด๋๋์ง ํ์ธํฉ๋๋ค.์ฃผ์ด์ง ๋ฐฉํฅ์ผ๋ก ์ด๋ ์ค ์ฅ์ ๋ฌผ์ ๋ง๋๋์ง ํ์ธํฉ๋๋ค.
์ ๋ ๊ฐ์ง์ค ์ด๋ ํ๋๋ผ๋ ํด๋น๋๋ค๋ฉด, ๋ก๋ด ๊ฐ์์ง๋ ํด๋น ๋ช ๋ น์ ๋ฌด์ํ๊ณ ๋ค์ ๋ช ๋ น์ ์ํํฉ๋๋ค.๊ณต์์ ๊ฐ๋ก ๊ธธ์ด๊ฐ W, ์ธ๋ก ๊ธธ์ด๊ฐ H๋ผ๊ณ ํ ๋, ๊ณต์์ ์ข์ธก ์๋จ์ ์ขํ๋ (0, 0), ์ฐ์ธก ํ๋จ์ ์ขํ๋ (H - 1, W - 1) ์ ๋๋ค.
๊ณต์์ ๋ํ๋ด๋ ๋ฌธ์์ด ๋ฐฐ์ด
park
, ๋ก๋ด ๊ฐ์์ง๊ฐ ์ํํ ๋ช ๋ น์ด ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด
routes
๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ก๋ด ๊ฐ์์ง๊ฐ ๋ชจ๋ ๋ช ๋ น์ ์ํ ํ ๋์ธ ์์น๋ฅผ [์ธ๋ก ๋ฐฉํฅ ์ขํ, ๊ฐ๋ก ๋ฐฉํฅ ์ขํ] ์์ผ๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.

1.0.2. ์ ํ ์ฌํญ
-
-
- 3 โค park์ ๊ธธ์ด โค 50
- 3 โค park[i]์ ๊ธธ์ด โค 50
- park[i]๋ ๋ค์ ๋ฌธ์๋ค๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ ์์์ง์ ์ ํ๋๋ง ์ฃผ์ด์ง๋๋ค.
- S : ์์ ์ง์
- O : ์ด๋ ๊ฐ๋ฅํ ํต๋ก
- X : ์ฅ์ ๋ฌผ
- park[i]๋ ๋ค์ ๋ฌธ์๋ค๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ ์์์ง์ ์ ํ๋๋ง ์ฃผ์ด์ง๋๋ค.
- park๋ ์ง์ฌ๊ฐํ ๋ชจ์์ ๋๋ค.
- 3 โค park[i]์ ๊ธธ์ด โค 50
- 1 โค routes์ ๊ธธ์ด โค 50
- routes์ ๊ฐ ์์๋ ๋ก๋ด ๊ฐ์์ง๊ฐ ์ํํ ๋ช ๋ น์ด๋ฅผ ๋ํ๋ ๋๋ค.
- ๋ก๋ด ๊ฐ์์ง๋ routes์ ์ฒซ ๋ฒ์งธ ์์๋ถํฐ ์์๋๋ก ๋ช ๋ น์ ์ํํฉ๋๋ค.
- routes์ ์์๋ "op n"๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, op๋ ์ด๋ํ ๋ฐฉํฅ, n์ ์ด๋ํ ์นธ์ ์๋ฅผ ์๋ฏธํฉ๋๋ค.
- op๋ ๋ค์ ๋ค ๊ฐ์ง์ค ํ๋๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- N : ๋ถ์ชฝ์ผ๋ก ์ฃผ์ด์ง ์นธ๋งํผ ์ด๋ํฉ๋๋ค.
- S : ๋จ์ชฝ์ผ๋ก ์ฃผ์ด์ง ์นธ๋งํผ ์ด๋ํฉ๋๋ค.
- W : ์์ชฝ์ผ๋ก ์ฃผ์ด์ง ์นธ๋งํผ ์ด๋ํฉ๋๋ค.
- E : ๋์ชฝ์ผ๋ก ์ฃผ์ด์ง ์นธ๋งํผ ์ด๋ํฉ๋๋ค.
- 1 โค n โค 9
- op๋ ๋ค์ ๋ค ๊ฐ์ง์ค ํ๋๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- 3 โค park์ ๊ธธ์ด โค 50
-
1.0.3. ์ ์ถ๋ ฅ ์

์ ์ถ๋ ฅ ์ ์ค๋ช

2. ๐ก ์ฑ๊ณตํ ํ์ด
<javascript />
function solution(park, routes) {
let pos = [0, 0];
const dict = {
E: [0, 1],
W: [0, -1],
S: [1, 0],
N: [-1, 0]
};
for(let i = 0; i < park.length; i++) {
const findedIdx = park[i].indexOf('S');
if(findedIdx > -1) {
pos = [i, findedIdx];
break;
}
}
routes.forEach((route, index) => {
const [op, n] = route.split(' ');
const tempPos = [...pos];
let no = false;
for(let i = 0; i < n; i++) {
tempPos[0] += dict[op][0];
tempPos[1] += dict[op][1];
if((tempPos[0] < 0) || (tempPos[0] > park.length - 1) ||
(tempPos[1] < 0) || (tempPos[1] > park[0].length - 1)) {
no = true;
break;
}
if(park[tempPos[0]][tempPos[1]] === 'X') {
no = true;
break;
}
}
if(!no) {
pos = tempPos;
}
})
return pos;
}
๋จผ์ ๋,์,๋จ,๋ถ ๋ณ๋ก ์ด๋ํด์ผ ํ๋ ๋ฐฉํฅ๊ณผ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํ dict๋ฅผ ์ ์ธํด ์ฃผ์๋ค.
์ฒซ ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ ์์๋ ์์์์น ์ฆ, 'S'์ ์์น๋ฅผ ์ฐพ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
์ด์ค๋ฐฐ์ด์ด๊ธฐ ๋๋ฌธ์ ์ฒซ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ ์์์ indexOf๋ฅผ ํตํด 'S'์ index๋ฅผ ๊ฐ์ findedIdx์ ๋ด๊ณ ,
findexdIdx์ ๊ฐ์ด -1 ๋ณด๋ค ํฌ๋ฉด pos ๋ณ์์ ํ์ฌ index์ ์ฐพ์ index์ ๊ฐ์ ๋ด์์ฃผ์๋ค. [i, findedIdx] === [์ธ๋ก, ๊ฐ๋ก]
๊ทธ๋ฆฌ๊ณ ์์ ์์น๋ ํ ๋ฒ๋ฐ์ ๋ฐ๊ฒฌ๋์ง ์์ผ๋ ํ๋ฒ ๋ฐ๊ฒฌ์ด ๋๋ฉด ๋ฐ๋ณต๋ฌธ์ด ๋ ์ด์ ์คํ๋์ง ์๊ฒ๋ ๋ฐ๋ณต๋ฌธ์ ๋๋ด์ฃผ๋๋ก break๋ฅผ ํด์ฃผ์๋ค.
๋ค์์ routes ๋ฐฐ์ด์ ๋ํ ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฐ๋ค.
์ด๋ ๋ฐฉํฅ๊ณผ ๊ฑฐ๋ฆฌ์ ๋ํ ๋ด์ฉ์ ๋ณ์ op์ n์ ๋ด์์ฃผ๊ณ ,
๋ฌธ์ ๊ฐ ์๋์ง ์๋์ง ์ฒดํฌํ๋ no๋ผ๋ ๋ณ์๋ฅผ false๋ก ์ด๊ธฐํ์์ผ์ฃผ์๋ค.
S๊ฐ ์ด๋ํ๋ ์ค์ ์ฅ์ ๋ฌผ์ ๋ง๋๊ฑฐ๋ ๊ฑฐ๋ฆฌ๊ฐ ๋ฒ์ด๋๋ฉด ๋ค์ ๋ช ๋ น์ผ๋ก ๋์ด๊ฐ์ผ ํ๋๊น ์์๋ก ํ์ฌ ์์น๋ฅผ ๋ด์ ๋ ๋ณ์ tempPos๋ฐฐ์ด์ ํ์ฌ 'S' ์ฆ, ์์์์น๋ฅผ ๋ด๊ณ ์๋ pos ๋ณ์์ ๊ฐ์ ๋ด์์ฃผ๋๋ก ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฑฐ๋ฆฌ n ๋งํผ ๋ฐ๋ณต๋ฌธ์ ์คํํ๋๋ฐ,
ํ์ฌ ์์น๋ฅผ ์์๋ก ๋ด์ tempPos ๋ณ์์ ์ด๋ํ ๋ฐฉํฅ๊ณผ ๊ฑฐ๋ฆฌ๋ฅผ ๋ํด์ฃผ๋๋ก ํ๋ค.
if๋ฌธ์ด ์ด 2๊ฐ๊ฐ ์๋๋ฐ,
์ฒซ ๋ฒ์งธ if๋ฌธ์ ๊ฑฐ๋ฆฌ๋ฅผ ๋ฒ์ด๋จ์ ์ฒดํฌํ๋ ์ฝ๋์ด๊ณ ,
๋ ๋ฒ์งธ if๋ฌธ์ ์ด๋ ์ค X(์ง๋ขฐ)๋ฅผ ๋ฐ๊ฒฌํ๋ ์ฝ๋์ด๋ค.
์ด if๋ฌธ๋ค์ด ํ์ฉ์ด ๋๋ฉด ํด๋น ์ด๋๋ฐฉํฅ์ ์๋๋ค๋ no๋ผ๋ ๋ณ์์ true๋ฅผ ํด์ฃผ๊ณ , ์ด๋๊ฑฐ๋ฆฌ n๋งํผ ์คํํ๋ ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํด ์ค๋ค.
์ ๋ฐ๋ณต๋ฌธ์ด ๋๋๊ณ ๋๋ฉด,
no๋ผ๋ ๋ณ์์ false ์ฆ, ์ด๋ํด๋ ๋๋ ๋ฐฉํฅ๊ณผ ๊ฑฐ๋ฆฌ์ด๋ฉด ํ์ฌ 'S' ์์น๋ฅผ ๋ด์๋ pos ๋ณ์์ tempPos ๋ณ์์ ๊ฐ์ผ๋ก ๋ฐ๊ฟ์ค๋ค.
3. โ ์ฑ์
