Jieunny์ ๋ธ๋ก๊ทธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๊ณต์ ์ฐ์ฑ ๋ณธ๋ฌธ
๐ ๋ฌธ์
์ง๋๋ค๋๋ ๊ธธ์ 'O', ์ฅ์ ๋ฌผ์ 'X'๋ก ๋ํ๋ธ ์ง์ฌ๊ฐํ ๊ฒฉ์ ๋ชจ์์ ๊ณต์์์ ๋ก๋ด ๊ฐ์์ง๊ฐ ์ฐ์ฑ ์ ํ๋ คํฉ๋๋ค. ์ฐ์ฑ ์ ๋ก๋ด ๊ฐ์์ง์ ๋ฏธ๋ฆฌ ์ ๋ ฅ๋ ๋ช ๋ น์ ๋ฐ๋ผ ์งํํ๋ฉฐ, ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ ํ์์ผ๋ก ์ฃผ์ด์ง๋๋ค.
["๋ฐฉํฅ ๊ฑฐ๋ฆฌ", "๋ฐฉํฅ ๊ฑฐ๋ฆฌ" …]
์๋ฅผ ๋ค์ด "E 5"๋ ๋ก๋ด ๊ฐ์์ง๊ฐ ํ์ฌ ์์น์์ ๋์ชฝ์ผ๋ก 5์นธ ์ด๋ํ๋ค๋ ์๋ฏธ์ ๋๋ค. ๋ก๋ด ๊ฐ์์ง๋ ๋ช ๋ น์ ์ํํ๊ธฐ ์ ์ ๋ค์ ๋ ๊ฐ์ง๋ฅผ ๋จผ์ ํ์ธํฉ๋๋ค.
- ์ฃผ์ด์ง ๋ฐฉํฅ์ผ๋ก ์ด๋ํ ๋ ๊ณต์์ ๋ฒ์ด๋๋์ง ํ์ธํฉ๋๋ค.
- ์ฃผ์ด์ง ๋ฐฉํฅ์ผ๋ก ์ด๋ ์ค ์ฅ์ ๋ฌผ์ ๋ง๋๋์ง ํ์ธํฉ๋๋ค.
์ ๋ ๊ฐ์ง์ค ์ด๋ ํ๋๋ผ๋ ํด๋น๋๋ค๋ฉด, ๋ก๋ด ๊ฐ์์ง๋ ํด๋น ๋ช
๋ น์ ๋ฌด์ํ๊ณ ๋ค์ ๋ช
๋ น์ ์ํํฉ๋๋ค.
๊ณต์์ ๊ฐ๋ก ๊ธธ์ด๊ฐ W, ์ธ๋ก ๊ธธ์ด๊ฐ H๋ผ๊ณ ํ ๋, ๊ณต์์ ์ข์ธก ์๋จ์ ์ขํ๋ (0, 0), ์ฐ์ธก ํ๋จ์ ์ขํ๋ (H - 1, W - 1) ์
๋๋ค.
๊ณต์์ ๋ํ๋ด๋ ๋ฌธ์์ด ๋ฐฐ์ด park, ๋ก๋ด ๊ฐ์์ง๊ฐ ์ํํ ๋ช ๋ น์ด ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด routes๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ก๋ด ๊ฐ์์ง๊ฐ ๋ชจ๋ ๋ช ๋ น์ ์ํ ํ ๋์ธ ์์น๋ฅผ [์ธ๋ก ๋ฐฉํฅ ์ขํ, ๊ฐ๋ก ๋ฐฉํฅ ์ขํ] ์์ผ๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๐ก ์์ด๋์ด
์ฒ์ ์์ํ๋ ๊ณณ์ด ํญ์ 0, 0์ด ์๋๋ฏ๋ก S๊ฐ ์๋ ๊ณณ์ ์ฐพ์์ current ๋ณ์๋ฅผ ์ด๊ธฐํ ํด์ค๋ค.
if๋ฌธ์ผ๋ก ๋, ์, ๋จ, ๋ถ ๋ถ๊ธฐ๋ฅผ ๋๋ ์ map ํฌ๊ธฐ๋ฅผ ๋์ด๊ฐ๋์ง, ๋์ด๊ฐ์ง ์๋๋ค๋ฉด ๊ฐ๋ ๊ธธ์ ์ฅ์ ๋ฌผ์ด ์๋์ง ํ๋จํ๋ค.
(switch ์ฐ๋ ๊ฒ ๋ ๋์์ ๊ฒ ๊ฐ๋ค)
โ๏ธ ํ์ด
function solution(park, routes) {
let current = [0, 0];
for(let i=0; i<park[0].length; i++){
// ์์ ์ง์ ์ฐพ์์ฃผ๊ธฐ
for(let j=0; j<park.length; j++){
if(park[j][i] === 'S'){
current = [j, i];
break;
}
}
}
const route = [];
for(let i=0; i<routes.length; i++){
// split์ผ๋ก ๋ฐฉํฅ๊ณผ ๋ช ์นธ ๊ฐ๋์ง ๋๋ ์ ์ ์ฅํด์ฃผ๊ธฐ
let temp = routes[i].split(' ');
route.push(temp);
}
route.map((item) => {
// map ํจ์๋ก ๋ฐ๋ณต ๋๊ธฐ
if(item[0] === 'N' && (current[0] - Number(item[1])) >= 0) {
let can = true;
for(let i=1; i<=Number(item[1]); i++){
if(park[current[0] - i][current[1]] === 'X') can = false;
}
if(can === true) current[0] -= Number(item[1]);
}
else if(item[0] === 'S' && (current[0] + Number(item[1])) < park.length) {
let can = true;
for(let i=1; i<=Number(item[1]); i++){
if(park[current[0] + i][current[1]] === 'X') {
can = false;
}
}
if(can === true) current[0] += Number(item[1]);
}
else if(item[0] === 'W' && (current[1] - Number(item[1])) >= 0) {
let can = true;
for(let i=1; i<=Number(item[1]); i++){
if(park[current[0]][current[1] - i] === 'X') can = false;
}
if(can === true) current[1] -= Number(item[1]);
}
else if(item[0] === 'E' && (current[1] + Number(item[1])) < park[0].length) {
let can = true;
for(let i=1; i<=Number(item[1]); i++){
if(park[current[0]][current[1] + i] === 'X') can = false;
}
if(can === true) current[1] += Number(item[1]);
}
})
return current;
}
'Study > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์ถ์ต ์ ์ (0) | 2023.04.04 |
---|---|
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๋ฐํํ๋ฉด ์ ๋ฆฌ (0) | 2023.04.04 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ํ๊ฒ ๋๋ฒ (0) | 2023.03.09 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๋ด์ค ํด๋ฌ์คํฐ๋ง (0) | 2023.03.03 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์ฐ์ ๋ถ๋ถ ์์ด ํฉ์ ๊ฐ์ (0) | 2023.03.03 |