이 문제는 BFS(넓이우선탐색)의 개념을 알아보는 문제이다. BFS의 개념은 앞장에서 정리했으니 참고하기!
간단히 BFS에 대한 설명을 하자면,
<html>
<head>
<meta charset="UTF-8">
<title>출력결과</title>
</head>
<body>
<script>
function solution(){
let answer=""; //string
let queue=[]; //큐 배열 만듦
queue.push(1); //루트노드 1번 넣어줌
//queue.length===0이면 비어있다는 소리니까 while문 멈추게 됨
while(queue.length){
let v=queue.shift(); //큐에서 하나의 노드(v) 꺼냄
answer+=v+" ";
//v의 이웃노드 방문
//nv: next v, nv는 for문에 의해 v*2, v*2+1이 됨
for(let nv of [v*2, v*2+1]){
if(nv>7) continue; //아래 코드 건너뜀(7이상은 안들어감)
queue.push(nv); //(위에서 꺼낸 노드에 연결된 노드중, 방문하지 않은 노드 큐에 삽입
}
}
return answer;
}
console.log(solution());
</script>
</body>
</html>
9/18
bfs의 알고리즘 외우기