https://school.programmers.co.kr/learn/courses/30/lessons/67259
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ 3.
BFS + ์ผ์ฐจ์ ๋ฐฐ์ด...
ใ ใ ใ ใ ใ ํ ใ ใ ์ด์ฐจ์๋ฐฐ์ด๋ก ํ๋ค๊ฐ ์ฝ์งํ๋๋ผ 1์๊ฐ ๊ฑธ๋ฆผ
์นด์นด์ค ๊ธฐ์ถ์ด๋ผ ๊ทธ๋ฐ์ง, ๊ตฌํํ๋ฉด์ ์ ๊ฒฝ์จ์ผ ํ ๋ด์ฉ์ด ์ ๋ง์ ๋ง ๋ง์๋ค.
์ผ์ฐจ์๋ฐฐ์ด bfs์์ ๋ฐฉํฅ์ ๋ฐ๋ผ ์ต์๊ฐ์ ์ ์ฅํด์ค์ผ ํ๋๋ฐ,
์ถ๋ฐ์ ์์๋ ๋ฐฉํฅ์ด ์๊ด์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ๋ ๋ถ๊ธฐ์ฒ๋ฆฌ๋ฅผ ํด์ค์ผ ํ์!!
๊ทธ๋ฆฌ๊ณ ์ฝ๋์์๋ ์ฝ๋ ๋๋ก + ์ง์ง๋๋ก ๋ชจ๋ ํ์ํ๊ธฐ ๋๋ฌธ์, 600์ ๋ํด์ค์ผ ํ๋ค.
๊ฐ์ธ์ ์ผ๋ก ํจ์ ์ด ๋ง์๋ ๋ฌธ์ ๋ผ๊ณ ์๊ฐ
์ค๋ ฅ ์ฆ์งํ๊ธฐ ์ฐธ ์ด๋ ต๋ค
๋ค์ ๋๋ ์ ์ด์ง๋ง, JS๋ ๋ฐฐ์ด ์ด๊ธฐํ๊ฐ ์ฐธ ๋ถํธํ๋ค..^-^
๋์ ํ์ด
let dx = [0,1,0,-1]; // ์๊ณ๋ฐฉํฅ : ์, ์ค๋ฅธ์ชฝ, ์๋, ์ผ์ชฝ
let dy = [1,0,-1,0];
let visited;
let Board;
function canVisit(x, y, size){
if(x<0 || x>=size || y<0 || y>=size) return false;
if(Board[x][y]==1) return false;
return true;
}
function solution(board) {
Board = board;
let answer;
let size = board.length;
// ๋ฐฉํฅ์ ๋ฐ๋ฅธ ์ ์ฅ์ด ์ถ๊ฐ๋ก ํ์ํ๋ฏ๋ก, ์ผ์ฐจ์ ๋ฐฐ์ด ํ์ฉ
let visit = Array.from({length:size},()=>
Array.from({length:size},()=>
Array(4).fill(Infinity)));
visited = visit;
let q = [];
q.push([0,0,-1,0]); // x, y, ๋ฐฉํฅ, ๊ธ์ก
while(q.length){
let [x, y, d, cost] = q.shift();
for(let i=0; i<4; ++i){
let nx = x + dx[i];
let ny = y + dy[i];
if(canVisit(nx,ny,size)){
// ์ง์ 100์, ์ฝ๋ 500์+100์ ์ถ๊ฐ
let newCost = d==i? cost+100 : cost+600;
if(d<0) newCost = cost+100; // ์ถ๋ฐํ ๋(๋ฐฉํฅ : -1) ํญ์ ์ง์ง์
if(visited[nx][ny][i]>newCost){
q.push([nx,ny,i,newCost]);
visited[nx][ny][i] = newCost;
}
}
}
}
// console.log(visited);
answer = Math.min(...visited[size-1][size-1]);
return answer;
}
'๐ ์๊ณ ๋ฆฌ์ฆ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript/PGS] Lv.3 : [1์ฐจ] ์ ํ๋ฒ์ค (2018 KAKAO) (0) | 2025.05.08 |
---|---|
[Javascript/PGS] Lv.2 : n^2 ๋ฐฐ์ด ์๋ฅด๊ธฐ (0) | 2025.05.08 |
[C++/PGS] Lv.4 : ์ง๊ฒ๋ค๋ฆฌ (์ด๋ถํ์) (0) | 2025.05.03 |
[C++/PGS] Lv.3 : ์์ ๋ณต์ํ๊ธฐ (PCCP ๊ธฐ์ถ๋ฌธ์ 4๋ฒ) - ๋ณด๋ฅ๐ฅต (0) | 2025.05.02 |
[C++/PGS] Lv.1 : ๋์์ ์ฌ์๊ธฐ (PCCP ๊ธฐ์ถ๋ฌธ์ 1๋ฒ) (0) | 2025.05.02 |