inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

2-D

DFS Connected Component 사이즈 계산방법

288

BH J

작성한 질문수 36

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번째 방법으로 매개변수를 추가하는 방식으로 문제를 풀었었거든요

C++ 코테 준비 같이 해요!

답변 1

1

큰돌

음 사실 성능적으로 보면 도찐 개찐이긴해요. 일단 1번째 방법을 추천하는 이유는.

매개변수를 줄일 수 있다는 좋은 점이 있기 때문입니다.

나중에 DP를 하면 알겠지만 매개변수가 3 ~ 5개 되는 것도 정말 많습니다. 그렇게 되었을 때 매개변수가 많으면 실수하기도 해서... 저는 코드를 짤 때 매개변수를 줄일 수 있는 것은 줄이려고 노력하는 편입니다. 여기서 전체 size 를 구하는 경우, dfs로 매번 노드를 탐색할 때 그 노드 자체가 size = 1이라는 것이 자명합니다.

그렇기 때문에 이 부분은 충분히 매개변수를 쓰지 않고 구현할 수 있어요.

그래서 저는 1번째 방법을 추천드려요.

 

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

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

감사합니다.

1-E질문입니다!

0

533

2

3-L 틀린 부분 피드백 부탁드립니다.

0

835

2

1-A문제 순열재귀함수 질문입니다.

0

396

1

1-A 일곱난쟁이문제입니다

0

469

1

문제 풀 때 방향성에 대해

0

809

1

맥에서 vs code로 실행 관련 질문입니다

0

530

1

17071번 메모리 초과

0

389

1

1-C질문입니다!

0

428

2

2-B BFS 시간초과질문

0

637

2

1-O 13번 라인

0

445

1

6-J 놀이공원 문제 질문

0

388

1

구현관련 질문

0

491

1

강의 교안

0

321

1

실력을 더 올리고나서 강의를 보는 것이 맞을까요?

0

550

1

안녕하세요! 재귀함수에 관해서 질문드립니다

0

539

1

1-K

0

481

2

3-G번 질문있습니다.

1

480

3

3-C 실행 시간 질문드립니다.

0

502

1

4-A 문제 풀이 질문있습니다.

0

601

2

비트마스킹 연산자 "1의 보수" 영문 표기법

0

441

1

격자탐색 문제에서 BFS 시간복잡도 질문드립니다.

0

349

1

3-O go 함수 질문 드립니다.

1

452

2

4-A 출력 질문

0

307

1

1주차 1-O 질문드립니다

0

264

1