촌수계산질문
안녕하세요! 선생님이 알리켜주신대로 한번 다시 하다가 저는 bfs 메소드에서 ++count로 했는데 count+1과 무슨 차이가 있을까요?? 백준에서 돌려봤더니 틀렸다고 떠요!
private static void dfs(int start, int count) {
visited[start]=true;
if(start==end){
answer=count;
return;
}
for(int i=1;i<=N;i++){
if(visited[i]==false&&graph[start][i]){
dfs(i,++count);
}
}
}
답변 1
2
안녕하세요 :)
++count나 count+1 이나 처음 재귀함수를 호출할 때는 똑같은데요, 그 다음부터는 작성하신 방식의 ++count는 count에 값이 하나씩 누적되고, count + 1에는 값이 누적되지 않기 때문에 동작이 달라집니다!
예를 들어 처음에 idx = 1, cnt = 0으로 들어왔고, 1과 연결된 요소가 2, 3, 4가 있다고 가정했을 때, 우리가 기대하는 건 각각 2, 3, 4를 호출할 때 cnt + 1 인 1이 전달되기를 기대합니다. 그런데 작성하신 방식대로 ++cnt를 하면 2번을 호출할 때는 1이겠지만, 3번을 호출할 때는 2, 4번을 호출할 때는 3 이런 식으로 누적이 되어 동작이 달라질 것 같습니다.
이걸 직접 디버깅 모드로 보고 싶으시다면 위 코드에서 dfs함수를 재귀호출하기 전에 if(idx == 1)이라고 조건문을 걸고, i와 count의 값을 확인하거나 출력해보면 잘 보일 것 같아요!
혹시라도 답변이 명확하지 못했으면 알려주세요! :) 오늘도 공부 화이팅입니다.
dfs 부문을 이렇게 작성해도 되나요?
1
74
1
x랑 y를 거꾸로 쓰는 개념이 너무 헷갈립니다...
1
97
2
dfs 파라미터에 count를 넣는이유
1
65
2
graph 채울때 for문 설계 질문
1
73
2
질문있습니다.
1
75
1
다른 강의 언제나오나용?
1
94
2
노드간 거리 계산
1
146
1
안녕하세요, 혹시 다른문제도 여쭤볼 수 있을까요?
1
131
1
최근에 올린 질문, 코드블럭으로 공유드립니다!
1
143
1
질문이 있습니다. dfs 메서드에 order를 이렇게 구현하면 안되는 이유가 무엇인가요?
0
135
2
깊이우선탐색2 백준 24480 수업노트에...
1
120
1
백준 24479 문제 제출 결과 "틀렸습니다" 라고만 나와서 어떤 부분이 틀렸는지 잘 모르겠어요 피드백 부탁드립니다
1
251
3
graph 만들때 boolean[][] 으로 만드는 경우랑 int[][] 나 ArrayList<Integer>[] 로 만드는 기준이 어떻게 되나요?
1
202
2
graph를 2차원 배열 또는 List로 하는 기준을 어떤식으로 잡으면 좋을까요...?
1
224
1
강사님 안녕하세요! 깊이 우선 탐색 2 (백준 24480)에서 제공하는 풀이 코드에서 궁금한 점이 있어서 질문 드립니다!
1
328
3
촌수 계산
1
355
3
연결 요소의 개수 (백준 11724)
1
268
1
백준 24479 문제 시간 초과 질문 드려요
1
384
1
백준 실행시 틀립니다.
1
373
1
재귀대신 스택으로 구현하면 안될까요?
1
410
1
dfs 매개변수에서 y,x 를 왜 순서를 반대로 쓰셨는지 궁금합니다.
1
373
1
안녕하세요 11724번 질문드려요!
2
316
1
출력할 때 BufferedWriter? StringBuilder?
1
513
1
answer++ 위치 질문
1
257
1





