백준 11060 JS 풀이

hun2__2·2023년 8월 14일
0

코딩테스트

목록 보기
43/48

구하는 값

점프해서 원하는 곳 까지 몇번만에 가는지

핵심 아이디어

que에 idx와 step을 같이 넣어서 bfs로 돌림

코드

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

class Que {
    q = [];
    h = 0;
    t = 0;
    enque(v) {
        this.q[this.t++] = v;
    }
    deque() {
        const v = this.q[this.h];
        delete this.q[this.h++];
        return v;
    }
    size() {
        return this.t - this.h;
    }
}

const n = Number(input[0]);
const arr = [0, ...input[1].split(" ").map(Number)];
const visited = new Array(n + 1).fill(false);
// console.log(arr);

const que = new Que();
que.enque([1, 0]);
visited[1] = true;

let ans = -1;
while (que.size()) {
    const [cur, dep] = que.deque();

    if (cur === n) {
        ans = dep;
        break;
    }
    if (cur > n || arr[cur] === 0) continue;

    for (let i = 1; i <= arr[cur]; i++) {
        if (!visited[cur + i]) {
            que.enque([cur + i, dep + 1]);
            visited[cur + i] = true;
        }
    }
}

console.log(ans);
profile
과정을 적는 곳

0개의 댓글