Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- useRef 지역 변수
- 프로그래머스 데브코스
- react 프로젝트 리팩토링
- 머쓱이
- Vue3 Router
- 투포인터알고리즘 js
- 모던 자바스크립트 딥다이브
- 리팩토링 회고
- react customHook 예시
- frontend roadmap study
- 개발자 특강
- 우테캠 회고록
- useEffect return
- 프로그래머스 데브코스 프론트엔드
- 백준 node.js
- KDT 프로그래머스 데브코스 프론트엔드
- TypeScript 문법 소개
- KDT 프로그래머스
- Vue3
- Frontend Roadmap
- 모던 javascript Deep Dive
- 모던 자바스크립트 Deep Dive
- 프로그래머스 K_Digital Training
- 백준 js
- 프로그래머스 데브코스 프론트엔드 TIL
- K_Digital Training
- 인프런 자바스크립트 알고리즘 문제풀이
- 모던 자바스크립트 TIL
- 모던 자바스크립트 Deep Dive TIL
- 프로그래머스 K_Digital Training 프론트엔드
Archives
- Today
- Total
프론트엔드 개발자의 기록 공간
[BFS] 송아지 찾기 본문
🚩 송아지 찾기
📖 문제 설명 : 현수가 -1, +1, +5칸을 움직일 수 있다. 최소 몇 번의 이동으로 송아지가 위치한 곳 까지 갈 수 있는지 구해라.
💡 +1을 간 경우에서 -1을 수행할 경우 똑같은 위치를 반복해서 탐색하는 경우가 있다. 따라서 방문 표시를 위한 체크 배열을 이용한다.
// 송아지 찾기 (BFS: 상태트리탐색)
function solution(S, E) {
let answer = 1 // 연산 편의를 위한 1부터 시작
let queue = [S] // 처음 나의 위치
let visited = [] // 중복 숫자 처리를 위한 방문 처리 배열
while (true) {
let tmp = []
let n = queue.length // queue.shift 할 경우 길이가 반복문 수행시 달라짐
for (let i = 0; i < n; i++) {
let firstQueue = queue.shift()
// 방문한적 없는 숫자일 경우만 계산을 위한 tmp 배열 삽입 및 방문 처리
if (!visited.includes(firstQueue)) {
tmp.push(firstQueue)
visited.push(firstQueue)
}
}
// 점프 연산
for (let j = 0; j < tmp.length; j++) {
queue.push(tmp[j] - 1)
queue.push(tmp[j] + 1)
queue.push(tmp[j] + 5)
}
// E 값이 있을 경우 송아지 찾기 완료
if (queue.includes(E)) {
console.log(queue)
break
}
answer += 1
}
return answer
}
console.log(solution(5, 14)) // 3
console.log(solution(8, 3)) // 5
👨💻 코드 설명
1. 현재 현수의 위치를 queue에 삽입해 준다.
2. 송아지를 찾을 때까지 반복문을 수행한다.
3. queue에 있는 값을 꺼내 방문하지 않았던 위치의 경우 방문 표시를 해주고, 해당 위치에서 -1, +1, +5 연산을 수행한 위치를 넣어준다.
4. queue에서 송아지의 위치가 있을 경우 찾았기 때문에 반복문을 종료하고 그렇지 않으면 이동 횟수를 카운트해주고 3번의 과정을 다시 수행한다.
잘못된 설명, 코드, 예외 케이스가 있다면 댓글 남겨주시면 수정하겠습니다.
728x90
'알고리즘_JS > 인프런 JS알고리즘' 카테고리의 다른 글
[DP] 계단 오르기 (0) | 2022.04.06 |
---|---|
[BFS, DFS] 섬나라 아일랜드 (0) | 2022.04.05 |
[DFS] 경로 탐색 (0) | 2022.04.04 |
[재귀함수, 완전탐색] 조합 구하기 (0) | 2022.04.03 |
[재귀함수, 완전탐색] 순열 구하기 (0) | 2022.04.02 |
Comments