[JAVA] BFS 구현 시 생각해야 할 것

개발하는 파랑이·2024년 11월 4일

CodingTest

목록 보기
8/9
  • ArrayList보다 ArrayDeque 사용을 추천(넣고 빼기 쉽기 때문)
  • 큐 선언 시 int[] 형식이라면 안의 내용은 [(5, 0), (4, 1), (6, 1), (10, 1), (3, 2), (8, 2), ...] 이런 식이다.
  • 위의 큐에 offer(삽입)하게 된다면 int[] 타입의 객체만 넣을 수 있기에 queue.offer(new int[]{node, 0}) 이런 형식으로 작성해야 한다.
  • 찾은 값을 큐에 offer함과 동시에 무조건 방문했으므로 그 값을 true로 바꿔줘야 한다.
  • 큐가 빌 때까지 반복하지만 반복 도중 찾는 값과 동일해진다면 반드시 return 해야 한다.
  • 경로가 궁금하다면 찾은 값에서 역추적을 해야한다.
    • stack을 사용하거나 arraylist의 Collections.reverse() 사용해 뒤집어야 한다.(스택이 직관적이고 코드가 간결하므로 웬만하면 스택 사용 추천)
    • 예) prev[next] = culLocation; //이렇게 해야지 역추적이 된다. 이후 stack에 push할 때에는 내가 찾는 최종 값을 시작으로 이어나가면 된다.
profile
이것저것 개발자

0개의 댓글