강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

BH J님의 프로필 이미지
BH J

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2-D

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번째 방법을 추천드려요.

 

또한 좋은 고민이였다는 말씀을 드립니다.

항상 이렇게 어떤 것이 좋은 코드인가 생각하시는 것은 정말 좋습니다.

감사합니다.

BH J님의 프로필 이미지
BH J

작성한 질문수

질문하기