inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

6. 송아지 찾기(BFS)

코드 검토

219

00

작성한 질문수 28

0

안녕하세요! 선생님의 bfs 풀이 아이디어를 듣고 혼자 풀어봤습니다! 저의 경우 ch 랑 dis를 합쳐서 check 로 풀어서, 디폴트가null 이어서 널 이면 큐에 넣고, 숫자가 들ㄹ어가있으면 continue 하는 식을로 했는데 괜찮을까요?

function solution(s, e) {
  let answer = 0;
  let dx = [1, -1, 5];
  let check = Array.from({ length: 10001 }, () => null);
  check[s] = 0;
  let queue = [];
  queue.push(s);

  while (queue.length) {
    let v = queue.shift();
    if (v === e) {
      answer = check[v];
      break;
    }
    for (let a of dx) {
      let x = a + v;
      if (check[x] !== null || x < 1 || x > 10000) continue;
      check[x] = check[v] + 1;
      queue.push(x);
    }
  }
  return answer;
}

 

javascript 코딩-테스트

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
00님, BFS 문제풀이 시도에 대하여 질문해 주셨군요.

네, 00님께서 작성하신 코드에서 chdis 배열을 하나의 check 배열로 합쳐 null 값을 초기 상태로 두고, 방문 여부 및 거리를 기록하는 방식은 올바른 접근입니다. 각 위치에 처음 방문하는 경우에만 큐에 넣어 BFS를 진행하고, 이미 방문했던 위치거나 범위를 벗어난 경우 다음 노드로 넘어가는 로직으로 잘 작성하셨습니다.

위 코드는 BFS를 이용하여 최단 거리를 찾는 문제에서 자주 사용하는 패턴인데요, 그대로 사용하셔도 무방합니다. 하지만 실제 문제가 어떤 범위의 값과 어떤 조건을 가지고 있는지에 따라 코드를 적절하게 수정할 필요는 있을 수 있습니다.

정리하면, null 값으로 초기화하고 방문하지 않았음을 표시한 뒤, 방문 시 해당 단계의 거리를 기록하는 방식은 BFS를 통해 최단 경로를 찾는 문제에 적합한 전략입니다.

계속해서 좋은 문제 해결 방법을 찾아나가시길 바랍니다. 화이팅입니다!

continue를 사용하는 이유

0

79

2

정렬 가능 여부 판단하기

0

64

2

알고리즘 학습법 관련해서 질문드립니다.

0

86

1

코드 리뷰 부탁드립니다!

0

90

1

indexOf를 사용해서 풀어보았습니다 !!

0

68

1

저는 이런식으로 구현 해보았습니다 !!

0

64

1

12,13,14 강의 소리만 나오고 검은 화면입니다

0

100

3

반복문 최소화하고 indexOf 사용해서 풀어봤습니다

0

63

1

영상 보기 전에 직접 풀어봤습니다.

0

74

1

섹션1의 17번문제 이 풀이로 풀어도 될까요?

0

135

2

정규표현식으로 처리해도 상관없나요 ?

0

120

2

3칸씩 건너뛸 수 있을 경우

0

125

2

강의에 대해 질문있습니다.

0

135

2

Object와 Set을 이용해 풀어봤습니다.

0

117

2

이렇게 해도 되나요?

0

102

2

선생님 중복 단어나 중복관련 문제들은 set을 이용하면 좋을것 같습니다.

0

145

2

이렇게 풀어도 괜찮을까요?

0

138

1

이렇게 풀어도 괜찮을까요?

0

112

1

모든 아나그램 찾기에서 시간복잡도

0

98

1

코드리뷰 부탁드립니다.

0

130

1

for loop 탈출은 return 문으로 해도 되지 않나요?

0

133

1

투포인트알고리즘으로 풀어봤습니다.

0

142

0

코드 리뷰 부탁드립니다.

0

120

1

코드 맞게 작성한 거 아닌가여??

0

146

1