백준 16173 JS 풀이

hun2__2·2023년 7월 17일
0

코딩테스트

목록 보기
5/48

구하는 값

0,0 -> n-1,n-1로 갈 수 있는지
근데 지그재그는 안되네...왜 그걸 안 적어줘요ㅡㅡ

핵심 아이디어

dx=[1,0], dy = [0,1]로 잡고 for문돌릴떄 step만큼 곱해서 다음 dfs로 넘겨준다.

코드

const input = require('fs').readFileSync('dev/stdin').toString().trim().split('\n')

const n = Number(input[0]);

const graph = [];
for (let i = 1; i <= n; i++) graph.push(input[i].split(" ").map(Number));

const visited = Array.from({ length: n }, () => new Array(n).fill(false));

let ans = false;
const dx = [1, 0],
    dy = [0, 1];
function dfs(y, x, step) {
    visited[y][x] = true;
    if (y === n - 1 && x === n - 1) {
        ans = true;
        return;
    }

    for (let i = 0; i < 2; i++) {
        const nx = x + dx[i] * step,
            ny = y + dy[i] * step;

        if (ny < 0 || ny >= n || nx < 0 || nx >= n) continue;
        if (!visited[ny][nx]) {
            dfs(ny, nx, graph[ny][nx]);
        }
    }
}
dfs(0, 0, graph[0][0]);

console.log(ans ? "HaruHaru" : "Hing");
profile
과정을 적는 곳

0개의 댓글