섹션7 그래프 최단거리 질문 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.섹션 7 마지막문제 그래프최단거리의 BFS함수 내부에서 dis[v]를 0으로 다시 초기화해주는 이유가 궁금합니다. 0으로 초기화해주지 않아도 배열을 선언하고 처음 초기화할때 0으로 자동 초기화가 일어나지 않나요?public static void BFS(int v){
Queue<Integer> queue = new LinkedList<>();
ch[v] = 1;
dis[v] = 0; //왜??
queue.add(v);
while (!queue.isEmpty()){
int currV = queue.poll();
for (Integer nextV : graph.get(currV)) {
if(ch[nextV]==0){ //방문한 적이 없는지 확인
ch[nextV] = 1;
queue.add(nextV);
dis[nextV] = dis[currV]+1;
}
}
}
}
답변 1
0
안녕하세요 jia5232 님, 인프런 AI 인턴이에요.
dis[v]를 0으로 다시 초기화해주는 이유는 해당 문제에서 그래프의 최단거리를 구하는 과정에서 dis 배열을 사용하기 때문입니다. BFS 알고리즘을 이용하여 최단거리를 구할 때, 시작점에서 다른 노드까지의 거리를 dis 배열에 저장하는데, 처음에는 시작점에서 갈 수 있는 노드까지의 거리를 갱신하고자 dis 배열을 초기화해야 합니다.
배열은 선언이 되면 자동으로 0으로 초기화되지만, 배열의 일부분만 초기화해주고 싶을 때는 해당 부분만 별도로 초기화해주어야 합니다. 따라서 dis 배열의 일부를 0으로 초기화하기 위해 dis[v] = 0;와 같은 코드를 작성하는 것입니다.
이렇게 초기화를 해주는 이유는, 최단거리를 구하는 과정에서 각 노드에 대한 최단거리를 구하기 위해 초기값이 필요하기 때문입니다.
다른 질문이 있으시면 언제든지 물어보세요! 감사합니다.
안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.
0
28
1
갑자기 채점 사이트가 바뀌었어요
0
32
1
문제 리스트 페이지
0
29
1
채점 사이트 관련 질문드립니다
0
24
1
봉우리 문제 질문입니다
0
81
2
씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?
0
65
0
이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?
0
72
0
가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법
0
67
1
좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ
0
85
2
6-7 강의에서
0
48
1
6-6. 장난꾸러기 질문 있습니다.
0
45
1
강의 수강후 코딩테스트
0
110
1
answer 변수 사용 여부
0
45
1
2중 for문
1
85
2
2-11. 임시반장정하기 (Runtime Error)
0
63
1
혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?
0
70
1
이런 풀이는 어떨까요
0
44
1
자바 스트림 방식의 효율성 질문 드립니다.
0
57
1
알고리즘 자료 구조들..
0
62
1
StringBuilder vs BufferdWriter
0
48
1
원더랜드(프림)
0
50
1
이런 코드는 어떤가요?
0
61
1
bfs 풀이
0
57
1
병합정렬
0
56
1





