Early Riser
생각정리
Early Riser
전체 방문자
오늘
어제
  • 분류 전체보기 (128)
    • JS (19)
    • React (33)
    • React Native (2)
    • Library, Tool (13)
    • CSS (2)
    • Algorithm (40)
    • Computer Science (3)
    • 회고 (3)
    • AI (13)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

인기 글

태그

  • 알고리즘
  • 자바스크립트
  • useEffect
  • 손실함수
  • javascript
  • boosting
  • 백트래킹
  • 파이썬
  • 논문리뷰
  • global minima
  • 백준
  • 부스트캠프 합격 후기
  • 비동기
  • BFS
  • 완전탐색
  • 구현
  • RNN
  • useState
  • 오늘의불경
  • lightgbm
  • 딥러닝
  • dfs
  • js
  • 밑바닥
  • 부스트캠프 합격
  • LGBM
  • 프로그래머스
  • react
  • 부스트캠프 9기
  • local minima

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Early Riser

생각정리

백준 13913번: 숨바꼭질4 (javascript, BFS)
Algorithm

백준 13913번: 숨바꼭질4 (javascript, BFS)

2023. 4. 5. 18:28

숨바꼭질 문제의 변형판이다. 최단경로와 그 경로를 출력해야 한다. 최단경로는 이전에 구한 것처럼 BFS를 이용해 구할 수 있다. 

새로운 배열을 선언하고 방문한 점의 위치에 이전 점의 위치를 저장하고, 목표 위치인 K에 도착했을 때 반복문으로 이전 좌표들을 따라감으로써 방문경로를 확인하였다.

 

코드는 다음과 같다.

const fs = require('fs');
let [N, K] = fs.readFileSync("/dev/stdin").toString().trim().split(' ').map(a => Number(a))

function BFS(x, k){
    let queue = [x]
    let array = new Array(MAX).fill(0)
    let path = new Array(MAX).fill(0)
    if(x === k){
        return [0, x]
    }
    else{
        while(queue.length){
            let y = queue.shift()
            if(y === k){
                const min = array[y]
                let backtrack = String(k)
                let start = y
                while(start !== x){
                    backtrack = String(path[start]) + ' '+backtrack
                    start = path[start]
                }
                return [min, backtrack]
            }
            for(const move of [y-1, y+1, 2*y]){
                if(move <= 100001 && !array[move]){
                    queue.push(move)
                    // 걸리는 시간 체크
                    array[move] = array[y]+1
                    path[move] = y
                }
            }
        }
    }
}

const MAX = 100001
const [min, track] = BFS(N, K)
console.log(min)
console.log(track)

 

'Algorithm' 카테고리의 다른 글

백준 1987번: 알파벳(javascript, DFS, 백트래킹)  (0) 2023.04.10
백준 2529번: 부등호 (javascript, DFS, 백트래킹)  (0) 2023.04.09
백준 1697번: 숨바꼭질 (javascript, bfs)  (0) 2023.04.04
백준 16234번: 인구이동(javascript, BFS, 완전탐색)  (0) 2023.04.01
백준 2589번: 보물섬(javscript, BFS, 완전탐색)  (0) 2023.04.01
    'Algorithm' 카테고리의 다른 글
    • 백준 1987번: 알파벳(javascript, DFS, 백트래킹)
    • 백준 2529번: 부등호 (javascript, DFS, 백트래킹)
    • 백준 1697번: 숨바꼭질 (javascript, bfs)
    • 백준 16234번: 인구이동(javascript, BFS, 완전탐색)
    Early Riser
    Early Riser
    2년차 프론트엔드 개발자입니다. https://github.com/EarlyRiser42

    티스토리툴바