Jieunnyμ λΈλ‘κ·Έ
[JS] νλ‘κ·Έλλ¨Έμ€ - κ²μ 맡 μ΅λ¨κ±°λ¦¬ λ³Έλ¬Έ
π λ¬Έμ
ROR κ²μμ λ νμΌλ‘ λλμ΄μ μ§ννλ©°, μλ ν μ§μμ λ¨Όμ νκ΄΄νλ©΄ μ΄κΈ°λ κ²μμ
λλ€. λ°λΌμ, κ° νμ μλ ν μ§μμ μ΅λν 빨리 λμ°©νλ κ²μ΄ μ 리ν©λλ€.
μ§κΈλΆν° λΉμ μ ν νμ νμμ΄ λμ΄ κ²μμ μ§ννλ €κ³ ν©λλ€. λ€μμ 5 x 5 ν¬κΈ°μ 맡μ, λΉμ μ μΊλ¦ν°κ° (ν: 1, μ΄: 1) μμΉμ μκ³ , μλ ν μ§μμ (ν: 5, μ΄: 5) μμΉμ μλ κ²½μ°μ μμμ
λλ€.
μ κ·Έλ¦Όμμ κ²μμ λΆλΆμ λ²½μΌλ‘ λ§νμμ΄ κ° μ μλ κΈΈμ΄λ©°, ν°μ λΆλΆμ κ° μ μλ κΈΈμ
λλ€. μΊλ¦ν°κ° μμ§μΌ λλ λ, μ, λ¨, λΆ λ°©ν₯μΌλ‘ ν μΉΈμ© μ΄λνλ©°, κ²μ 맡μ λ²μ΄λ κΈΈμ κ° μ μμ΅λλ€.
λ§μ½, μλ νμ΄ μμ μ ν μ§μ μ£Όμμ λ²½μ μΈμλμλ€λ©΄ μλ ν μ§μμ λμ°©νμ§ λͺ»ν μλ μμ΅λλ€. μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ κ²½μ°μ λΉμ μ μΊλ¦ν°λ μλ ν μ§μμ λμ°©ν μ μμ΅λλ€.
κ²μ 맡μ μν mapsκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, μΊλ¦ν°κ° μλ ν μ§μμ λμ°©νκΈ° μν΄μ μ§λκ°μΌ νλ μΉΈμ κ°μμ μ΅μκ°μ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ. λ¨, μλ ν μ§μμ λμ°©ν μ μμ λλ -1μ return ν΄μ£ΌμΈμ.
π‘ μμ΄λμ΄
μ΅λ¨κ±°λ¦¬ -> BFS
μ²μμ visited λ°°μ΄μ λ§λ€μ΄μ λ°©λ¬Έ μ¬λΆλ₯Ό νμν΄μ€¬λλ° κ³μ ν΅κ³Όλ₯Ό λͺ»νλ€..
μ΄μ λ μ΄μ°¨μ λ°°μ΄ μ μΈμ μλͺ» νκΈ° λλ¬Έ..
const visited = new Array(n).fill(new Array(m).fill(false));
// μ΄λ° μμΌλ‘ νλ©΄ mapμ΄ μλμμ λΉμ°ν μ΄μ°¨μ λ°°μ΄μ΄ μλͺ» μ μΈλλλ° μ μ΄λ κ² νμ§
μ΄μ°¨μ λ°°μ΄λ κ³ μΉκ³ λ€μ μλνμ§λ§ μκ°μ΄κ³Ό -> visited λ°°μ΄μ λ§λλ κ² ν¨μ¨μ μ΄μ§ X
visited λ°°μ΄μ λ§λ€μ§ μκ³ κ·Έλ₯ maps μ체λ₯Ό 0μΌλ‘ λ°κΏμ£Όλ©΄ μ΄μ°¨νΌ λͺ»κ°κΈ° λλ¬Έμ visited λ°°μ΄μ trueλ‘ λ°κΏμ£Όλ κ²κ³Ό κ°μ μν
βοΈ νμ΄
// μκ°μ΄κ³Ό μ½λ
function solution(maps) {
var answer = 0;
const n = maps.length;
const m = maps[0].length;
const queue = [[0, 0, 1]];
const visited = Array.from(Array(n),() => Array(m).fill(0));
visited[0][0] = true;
const dx = [0, 0, -1, 1];
const dy = [1, -1, 0, 0];
while(queue.length) {
let [x, y, count] = queue.shift();
if(x === n-1 && y === m-1) return count;
for(let i=0; i<4; i++){
const moveX = x + dx[i];
const moveY = y + dy[i];
if(moveX >= 0 && moveX < n && moveY >= 0 && moveY < m) {
if(!visited[moveX][moveY] && maps[moveX][moveY] === 1) {
visited[moveX][moveY] = false;
queue.push([moveX, moveY, count + 1]);
}
}
}
}
return -1;
}
// μ λ΅ μ½λ
function solution(maps) {
var answer = 0;
const n = maps.length;
const m = maps[0].length;
const queue = [[0, 0, 1]];
const dx = [0, 0, -1, 1];
const dy = [1, -1, 0, 0];
if(maps[n-1][m-2] === 0 && maps[n-2][m-1] === 0) return -1;
while(queue.length) {
let [x, y, count] = queue.shift();
if(x === n-1 && y === m-1) return count;
for(let i=0; i<4; i++){
const moveX = x + dx[i];
const moveY = y + dy[i];
if(moveX >= 0 && moveX < n && moveY >= 0 && moveY < m) {
if(maps[moveX][moveY] === 1) {
maps[moveX][moveY] = 0;
queue.push([moveX, moveY, count + 1]);
}
}
}
}
return -1;
}
'Study > Coding Test' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JS] νλ‘κ·Έλλ¨Έμ€ - μ νλ²νΈ λͺ©λ‘ (0) | 2023.07.26 |
---|---|
[JS] νλ‘κ·Έλλ¨Έμ€ - μ€ν¬νΈλ¦¬ (0) | 2023.07.25 |
[JS] νλ‘κ·Έλλ¨Έμ€ - λ°©λ¬Έ κΈΈμ΄ (0) | 2023.07.20 |
[JS] νλ‘κ·Έλλ¨Έμ€ - λ λ°λ¨ΉκΈ° (0) | 2023.07.19 |
[JS] νλ‘κ·Έλλ¨Έμ€ - λμΆ© λ§λ μν (0) | 2023.07.18 |