inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

77. 친구인가?(Disjoint-set : Union&Find 알고리즘)

메모이제이션 관련 질문있습니다.

292

yhm1620

작성한 질문수 2

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 1:1 문의하기를 이용해주세요.
안녕하세요 강사님 좋은 강의 감사드립니다.
 
한 가지 이해가 되지 않는 부분이 있어 질문드리려고 합니다.
 
트리를 일일이 뻗지 않게 하려고 메모이제이션을 쓴다고 뒷부분에서 말씀하셨는데,
 
26분 13초에 그림을 보니 unf[v] = Find(unf[v])를 하는 것 자체가 계속 가지가 뻗는 것처럼 보입니다.
 
그냥 가지를 뻗는 것과, 메모이제이션이 똑같다는 느낌을 받는데, 혹시 차이가 정확히 어떤 것인지 궁금합니다.

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

답변 1

0

결국네오플붙음

해결하셨는지는 모르겠지만 답변이 없어서 제가 대신 답변드려봅니다!

말씀하신대로 26분 13초에 가지를 뻗는 건 맞습니다. 다만 나중에 두 사람이 친구인가의 관계를 확인할 때 차이가 있습니다.

 

  1. unf[v] = Find(unf[v]) 를 안 할 경우

    : 나중에 3과 8이 친구인가를 확인할 때 Find(3)과 Find(8)을 한 후에 두 값을 비교해야합니다. 이 때 가지를 2번 뻗어서 찾아야하는 소요가 있습니다.

     

  2. unf[v] = Find(unf[v]) 를 할 경우

    : 이 때는 unf[3]과 unf[8] 두 값이 같은지만 확인하면 됩니다.

도움이 되셨기를...!

테스트 케이스 질문

0

374

1

병합정렬 시간복잡도 질문

0

463

1

41.연속된 자연수의 합 문제풀이에서 수학적인 원리를 모르고 있습니다.

0

1348

2

질문드립니다.

0

377

1

질문드립니다!

0

431

1

dev 프로그램 질문

0

275

1

문제가 이해가 안되요

0

376

1

4번 나이차이 문제 접근법 질문 드립니다.

0

307

1

source file not compiled

0

1049

3

59번 질문드립니다.

0

372

1

25번 문제 질문

0

349

1

4. 나이차이 문제 질문입니다.

0

373

1

90번 라이언 킹 심바 1번 테스트 케이스

0

470

1

71번 문제 전역 변수 질문 있습니다

0

365

1

75번, 79번 priority_queue관련

1

356

1

75.최대 수입 스케줄

0

400

2

복면산 정답의 수

0

432

1

테스트 케이스에 대해서

0

446

1

수업 내용 질문입니다!

1

232

1

풀어보면 좋은 문제 목록 - 2580 스토쿠 DFS 질문입니다!!

0

825

2

12. 플로이드-와샬(그래프 최단거리) . 27:25초

0

255

1

다른 풀이 방식

0

317

1

크루스칼 vs 프림

0

307

1

숫자 총개수 small 질문있습니다.

0

243

1