-
문제
https://www.acmicpc.net/problem/1697
1697번: 숨바꼭질
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일
www.acmicpc.net
How to Solve ?
[1] BFS
이 문제를 풀면서, 이게 과연 "BFS" 의 특징을 잘 살린걸까? 라는 의문을 가졌고 실제로도 visited 없이도 정답이 출력이 된다. 하지만, 방문 여부를 체크 하게 되면 불필요한 순회를 제거 할 수 있기에 사용 할 가치는 있다고 생각 !
function solution() {let count = 0;const visited = Array(100001).fill(false);const queue = [[N, count]];while (queue.length) {const [start, count] = queue.shift();if (visited[start]) {continue;}visited[start] = true;if (start === K) {return count;}if (start * 2 <= 100000) {queue.push([start * 2, count + 1]);}if (start + 1 <= 100000) {queue.push([start + 1, count + 1]);}if (start - 1 >= 0) {queue.push([start - 1, count + 1]);}}}let N = 5;let K = 17;console.log(solution(N, K));'PS > 백준' 카테고리의 다른 글
[백준_14719] 빗물 ( Gold 5, by using JavaScript ) (0) 2021.06.01 [백준_14888] 연산자 끼워넣기 ( by using JavaScript ) (0) 2021.06.01 [ 알고리즘 로드맵 ] (0) 2021.05.06 [백준_1931] 회의실 배정 ( by using JavaScript ) (0) 2021.05.05 [백준_DP] 11052 카드 구매하기 ( by using javascript ) (0) 2021.04.14