인프런 커뮤니티 질문&답변
DFS Connected Component 사이즈 계산방법
작성
·
267
0
안녕하세요 큰돌님
DFS Connected Component 사이즈 계산시
1번째
큰돌님 코드소스처럼
return값에 += dfs를 호출하면서 방법
http://boj.kr/e94fb8e43b714794a0950505c0091594
2번째
전역변수 int cnt; 이후 cnt++;하는방법
3번째
dfs 매개변수에 cnt를 추가후
dfs(y, x, cnt)
처음에 dfs(y, x, 0) 으로 호출후
방문 & 내부조건확인후
cnt = dfs(ny, nx, cnt + 1) 이런식으로 재귀적 호출하다가
return cnt 하는방법 
질문
혹시 위에 3가지 방법에서 어떤 방법이 좋다고 생각하시나요??? 저는 큰돌님 강의 듣기전에는 딱히 이유는 없고 그냥 3번째 방법으로 매개변수를 추가하는 방식으로 문제를 풀었었거든요
답변 1
1
음 사실 성능적으로 보면 도찐 개찐이긴해요. 일단 1번째 방법을 추천하는 이유는.
매개변수를 줄일 수 있다는 좋은 점이 있기 때문입니다.
나중에 DP를 하면 알겠지만 매개변수가 3 ~ 5개 되는 것도 정말 많습니다. 그렇게 되었을 때 매개변수가 많으면 실수하기도 해서... 저는 코드를 짤 때 매개변수를 줄일 수 있는 것은 줄이려고 노력하는 편입니다. 여기서 전체 size 를 구하는 경우, dfs로 매번 노드를 탐색할 때 그 노드 자체가 size = 1이라는 것이 자명합니다.
그렇기 때문에 이 부분은 충분히 매개변수를 쓰지 않고 구현할 수 있어요.
그래서 저는 1번째 방법을 추천드려요.
또한 좋은 고민이였다는 말씀을 드립니다.
항상 이렇게 어떤 것이 좋은 코드인가 생각하시는 것은 정말 좋습니다.
감사합니다.





