강의

멘토링

로드맵

Inflearn brand logo image
BEST
Programming

/

Algorithm & Data Structure

[Java/Java] Thuật toán DFS mà ngay cả sinh viên giáo dục khai phóng cũng có thể hiểu được! - Giới thiệu

Đây là bài giảng DFS cơ bản giải thích cách một nhà phát triển đang làm việc có bằng nghệ thuật tự do nghiên cứu để có được việc làm :) Chúng tôi đã giảm thiểu các bài giảng lý thuyết nhàm chán đến mức tối thiểu và chuẩn bị một bài giảng trong đó bạn học bằng cách tự giải quyết vấn đề! Nếu bạn tham gia bài giảng này, bạn sẽ có thể tự mình giải quyết các vấn đề DFS cấp bạc.

(5.0) 39 đánh giá

417 học viên

  • gaebaljob
코딩테스트
실습 중심
dfs
Algorithm
Coding Test
Java

Đánh giá từ những học viên đầu tiên

Dịch cái này sang tiếng Việt

  • Không còn những giờ học lý thuyết nhàm chán! Chiến lược DFS học được thông qua việc giải quyết vấn đề!

  • Chọn và chỉ tập trung vào những câu hỏi thường gặp nhất!

  • Khả năng giải quyết các vấn đề DFS một cách độc lập

Thuật toán DFS khó hơn bạn nghĩ.
Học với các bài toán có tần suất cao 💡

Bạn đã bao giờ nghĩ về điều này chưa?

🤔 Làm sao tôi biết mình nên giải quyết vấn đề này bằng DFS?

🥲 Mặc dù tôi biết DFS là gì, nhưng tôi vẫn luôn cảm thấy bối rối. Có giải pháp chung nào không? 

🫠 Tôi không thể hình dung được các hàm đệ quy trong đầu. Làm thế nào tôi có thể sắp xếp chúng để hiểu được?

Cẩm nang dành cho nhà phát triển 8 năm dành cho người không chuyên ngành
Bài giảng về thuật toán DFS 🪢

DFS (Tìm kiếm theo chiều sâu) là một trong những phương pháp khám phá toàn bộ đồ thị và là thuật toán ưu tiên 'chiều sâu'.

Bài giảng này là bài giảng giới thiệu về thuật toán DFS. Mục tiêu là cung cấp kinh nghiệm thực tế về các bài toán DFS bằng cách giải quyết những bài toán thường gặp nhất . Sau khi tóm tắt ngắn gọn các khái niệm chính, chúng ta sẽ giải quyết từng loại bài toán để phát triển quan điểm nhận diện "bài toán này là bài toán DFS" và bao quát cốt lõi xuyên suốt tất cả các bài toán. Đây là bài giảng được tạo ra để chinh phục DFS :D

Bài giảng này sẽ rất hữu ích cho những ai đã nghiên cứu thuật toán DFS nhưng gặp khó khăn trong việc hiểu hoặc tự tìm ra giải pháp. Được biên soạn bởi một sinh viên chuyên ngành khoa học xã hội nhân văn với tám năm kinh nghiệm làm lập trình viên, bài giảng này được thiết kế dành cho người không chuyên, vì vậy tôi đảm bảo nó sẽ dễ hiểu hơn bất kỳ bài giảng nào khác. Dưới đây là một số bình luận trên kênh YouTube của tôi.


Tôi giới thiệu điều này cho những người này 🙋

Những người biết ngữ pháp Java cơ bản nhưng đang chuẩn bị cho bài kiểm tra mã hóa lần đầu tiên

Những người đã cố gắng tự giải quyết các vấn đề DFS nhưng vẫn không thể hiểu được

Những người cảm thấy lạc lõng khi họ thực sự nhìn thấy vấn đề ngay cả sau khi tham dự các bài giảng lý thuyết


Tính năng bài giảng ✨

#1.
Vấn đề DFS
Chúng ta hãy tóm tắt lại các gợi ý.

Một bình luận phổ biến mà sinh viên đưa ra trong các bài giảng của tôi là: "Em không biết mình phải giải bài này bằng DFS". Vì vậy, tôi bắt đầu bằng cách cùng họ đọc bài toán và trả lời câu hỏi: "Những từ khóa nào sẽ dẫn em đến DFS trong bài toán này?"

#2.
Khi chương trình tiến triển
Thay đổi cấu trúc dữ liệu
Để tôi chỉ cho bạn nhé.

Khóa học này không nhằm mục đích thay thế lời giải thích bằng hình ảnh đơn giản hoặc chỉ giải thích mọi thứ bằng từ ngữ và mã!

Chúng tôi sẽ sử dụng hình ảnh động để chỉ cho bạn mọi thứ, từ cách xác định và khởi tạo cấu trúc dữ liệu cho đến cách các giá trị thay đổi từng bước để tìm ra câu trả lời đúng.

#3.
Thâm nhập vào vấn đề
Chúng ta hãy tóm tắt những điểm chính.

Mặc dù cách triển khai khác nhau tùy theo từng bài toán, nhưng những điểm chung giữa các bài toán đòi hỏi thuật toán DFS vẫn không thay đổi. Bài giảng này sẽ phác thảo các yếu tố chính để giải quyết thành công các bài toán DFS, được sắp xếp theo từng loại, đồng thời dành thời gian để củng cố và tóm tắt lại các khái niệm cốt lõi cho từng bài toán.

Sau khi trải qua quá trình này, bạn sẽ có thể tự mình giải quyết các vấn đề DFS mới bằng cách nhanh chóng xác định những phần nào là chung và những phần nào đã thay đổi!


Bạn sẽ học được gì 📚

Trong bài giảng này, chúng tôi đã chọn ra 12 bài toán nhập môn DFS thường gặp và khó nhất (từ cấp độ Bạc 4 đến 2) được đăng tải trên Baekjoon. Sau đó, chúng tôi chia các bài toán này thành hai phân nhóm và tóm tắt các khái niệm cốt lõi cần thiết cho từng phân nhóm. Các phân nhóm và bài toán chi tiết như sau.

Loại 1. Tìm các phần tử được kết nối

  • Virus (2606) (Tải xuống miễn phí)
  • Số lượng phần tử được kết nối (11724)
  • Lớp thuật toán - Tìm kiếm theo chiều sâu 1 (24479)
  • Lớp thuật toán - Tìm kiếm theo chiều sâu 2 (24480)
  • DFS và BFS (1260)
  • Tính toán mức độ quan hệ họ hàng (2644)
  • Tìm kiếm cha mẹ của một cây (11725)

Loại 2. Tìm cùng một danh mục

  • Bắp cải hữu cơ (1012) (Xuất bản miễn phí)
  • Sự xâm nhập (13565)
  • Số lượng đảo (4963)
  • Trang trí sàn nhà (1388)
  • Vua Nhảy Charlie (Nhỏ) (16173)




Câu hỏi dự kiến Hỏi & Đáp 💬

H. Tại sao các bài giảng lại ngắn như vậy?

Với tư cách là một giảng viên, tôi thấy việc thêm nhiều bài tập để tạo thành một bài giảng lớn và tăng giá tương ứng sẽ có lợi hơn cho tôi. Tuy nhiên, xét đến việc nội dung và giải thích yêu cầu cho mỗi cấp độ khác nhau, và hầu hết người đăng ký/học viên của tôi đều là người đi làm không có thu nhập, tôi nghĩ tốt hơn nên chia nhỏ bài học thành nhiều phần nhỏ hơn và giảm giá. Vì vậy, tôi đã rút gọn và cô đọng hơn các khóa học khác.

H. Tôi không gặp nhiều vấn đề, nhưng tôi vẫn có thể hiểu DFS chứ?

Vì những lý do đã nêu ở trên, tôi đã chia khóa học thành các phần nhỏ hơn, và sau khóa học nhập môn, tôi cũng đang chuẩn bị các khóa học ứng dụng và nâng cao, bao gồm các cấp độ Vàng và Bạch kim. Vì vậy, tôi tin rằng sẽ là sai lầm nếu nói rằng "Chỉ riêng khóa học này thôi cũng đủ để bạn giải quyết mọi bài toán DFS!" (Suy cho cùng, việc học tập đòi hỏi thời gian để tự suy ngẫm). Tuy nhiên, tôi có thể đảm bảo rằng không có khóa học nào khác giới thiệu DFS dễ dàng như khóa học này, và sau khi hoàn thành, bạn sẽ có thể tự học và hiểu DFS. Vì vậy, tôi có thể tự tin giới thiệu khóa học này cho bất kỳ ai không cần video hướng dẫn giải bài toán đơn giản mà chỉ muốn học cách câu cá.

H. Trên YouTube cũng có giải pháp tương tự phải không?

Mặc dù mạch nội dung chung vẫn giữ nguyên, nhưng do đặc thù của YouTube, video không được dài, nên tôi đã lược bỏ hầu hết phần giải thích bổ sung. Nhiều người đăng ký đã đặt câu hỏi và bày tỏ sự thất vọng trong phần bình luận, và để giải quyết vấn đề này, tôi đã tạo một khóa học trực tuyến.

Tôi đã cố gắng trình bày mọi thứ tôi biết một cách đơn giản và súc tích nhất có thể. Thực tế, các chủ đề về virus và bắp cải hữu cơ được cung cấp miễn phí trong các bài giảng liên quan và cũng có sẵn trên YouTube. Bạn sẽ dễ dàng tự đánh giá hơn nếu xem phần tóm tắt ngắn gọn trên YouTube được giải thích chi tiết hơn trong bài giảng này, vì vậy hãy tham khảo nhé!

H. Phải mất bao lâu để nhận được phản hồi khi tôi đặt câu hỏi?

Trừ khi có vấn đề gì bất thường, tôi sẽ phản hồi trong vòng 24 giờ làm việc, và chậm nhất là 72 giờ. Sau khi tham gia nhiều lớp học trực tuyến, tôi nhận thấy rằng giảng viên phản hồi càng nhanh thì tốc độ học càng nhanh, hiệu quả hơn so với lớp học trực tiếp. Tuy nhiên, tôi cũng biết rằng thời gian phản hồi của giảng viên chậm hơn có thể làm giảm động lực học tập, vì vậy tôi sẽ kiểm tra bình luận hàng ngày và trả lời câu hỏi!

H. Có câu hỏi nào tôi không nên hỏi không?

Như tôi đã nói trong mọi video, mọi câu hỏi đều luôn được hoan nghênh. Nhiều khả năng các học viên khác cũng có những câu hỏi tương tự như tôi. Tuy nhiên, tôi nghĩ việc thiết lập một vài quy tắc sẽ giúp mọi người đặt câu hỏi dễ dàng hơn.

1. Vui lòng để lại câu hỏi liên quan đến video!

    • Vì mỗi video đề cập đến các chủ đề khác nhau nên tôi nghĩ sẽ hữu ích cho mọi người nếu bạn có thể đăng câu hỏi của mình trên video có liên quan để chúng ta có thể giúp đỡ lẫn nhau.

2. Đối với các câu hỏi liên quan đến tư vấn cuộc sống/việc làm, vui lòng liên hệ với chúng tôi qua mục cố vấn.

    • Vì câu trả lời cho những câu hỏi này có thể khác nhau tùy thuộc vào hoàn cảnh của mỗi cá nhân, việc đặt câu hỏi theo cách riêng tư hơn cho phép tôi đưa ra hướng dẫn chính xác hơn. Trả lời công khai những câu hỏi này sẽ chỉ mang lại những câu trả lời mơ hồ, vì vậy vui lòng để lại câu hỏi của bạn trong phần tư vấn và tôi sẽ rất vui lòng giải đáp.
    • Liên kết cố vấn: https://inf.run/kCsp

3. Vui lòng gửi thêm những câu hỏi như "Tại sao không?" thông qua phần cố vấn.

    • Đôi khi, vì bực bội, mọi người sao chép và dán toàn bộ mã nguồn rồi nhờ giúp đỡ. Những câu hỏi này khó có thể giúp ích cho người khác, và tình huống của mỗi người là khác nhau. Do đó, nếu bạn liên hệ riêng với chúng tôi qua mục Hướng dẫn, chúng tôi sẽ giải thích vấn đề, nguyên nhân và thậm chí cả cách khắc phục!
    • Liên kết cố vấn: https://inf.run/kCsp

Những điều cần lưu ý trước khi tham gia khóa học 📢

Môi trường thực hành

  • Tôi đang viết mã bằng VS Code trên Windows 11.
  • Sinh viên có thể sử dụng bất kỳ hệ điều hành/IDE nào.
  • Tuy nhiên, nếu bạn chuẩn bị trước một môi trường để có thể viết mã và xây dựng/gỡ lỗi, bạn có thể dễ dàng tham gia các bài giảng.
  • Đối với những ai thấy cài đặt chi tiết phức tạp hoặc khó khăn, chúng tôi khuyên bạn nên sử dụng Eclipse. ( https://www.eclipse.org/downloads/ )

Tài liệu học tập

  • Chúng tôi cung cấp PPT được sử dụng trong bài giảng ở định dạng PDF.

Kiến thức và biện pháp phòng ngừa của người chơi

  • Bài giảng tiếp tục với giả định rằng bạn hiểu ngữ pháp cơ bản của Java.
  • Nếu bạn đã có kinh nghiệm sử dụng DFS ít nhất một lần thì sẽ dễ hơn, nhưng đừng lo, có một giải thích cơ bản ngắn gọn dành cho những ai chưa biết về DFS!

Giới thiệu Người chia sẻ kiến thức ✒️

Xin chào :) Tôi bắt đầu là một sinh viên khoa học xã hội nhân văn chuyên ngành kinh doanh và kinh tế, và giờ tôi đã làm việc với tư cách là một lập trình viên được tám năm tại một tập đoàn lớn. Nghĩ lại thời điểm tôi mới bắt đầu học lập trình cách đây tám năm, tôi cảm thấy thật choáng ngợp và thử thách. Tuy nhiên, bằng cách tự mình sắp xếp và giải quyết vấn đề, cũng như phát triển các chiến lược riêng, tôi nghĩ mình đã tìm được việc làm nhanh hơn và thành công hơn một chút. Đặc biệt, với những người không chuyên đang gặp khó khăn với các bài kiểm tra lập trình, bài giảng này, do một người không chuyên giảng dạy, sẽ giúp bạn dễ hiểu hơn. Cảm ơn sự ủng hộ của các bạn! :)

Sơ yếu lý lịch / Hồ sơ năng lực / Video cá nhân

  • 8 năm kinh nghiệm làm lập trình viên tại một công ty lớn
  • Người sáng tạo YouTube cung cấp nội dung liên quan đến việc làm của nhà phát triển ( https://www.youtube.com/@gaebal )
  • Giảng viên Khóa học Giới thiệu Nền tảng Lập trình C++
  • Quản lý sản xuất chương trình Kiểm tra thuật toán nền tảng Ellis và Phiên bình luận trực tiếp

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Những người mới làm quen với thử nghiệm mã hóa/thuật toán DFS

  • Bất cứ ai từng đau đầu khi cố gắng hiểu hàm đệ quy

  • Tôi là người mới bắt đầu làm bài kiểm tra viết mã, biết ngữ pháp nhưng cảm thấy nhỏ bé hơn rất nhiều khi gặp vấn đề.

  • Những người hiểu khái niệm DFS nhưng lại bối rối vì không thể nghĩ ra giải pháp khi nhìn vào vấn đề

  • Những người mệt mỏi với lý thuyết và muốn cùng nhau giải quyết vấn đề

  • Bất kỳ ai đang chuẩn bị cho bài kiểm tra viết mã bằng Java

Cần biết trước khi bắt đầu?

  • Ngữ pháp cơ bản của Java (câu lệnh điều kiện, câu lệnh vòng lặp, câu lệnh đầu vào/đầu ra, v.v.)

Xin chào
Đây là

565

Học viên

53

Đánh giá

75

Trả lời

5.0

Xếp hạng

2

Các khóa học

문과생도 이해하는 알고리즘 강의를 가르치는 강사 개발자로 취직하기입니다 :)
저는 문과생 출신으로 현재는 8년차 대기업 개발자입니다. 처음 코딩을 접하고 코딩 테스트 준비를 하던 막막한 시절을 떠올리며, 어떻게 하면 조금 더 쉽게 설명할 수 있을지, 저 같은 비전공자 문과생도 이해하고 새로운 기술을 습득할 수 있을지 고민하며 강의를 제작하고 있습니다.
유튜브 통해서도 무료 강의 진행하고 있으니 많은 관심 부탁 드립니다!
https://www.youtube.com/@gaebal

Chương trình giảng dạy

Tất cả

19 bài giảng ∙ (3giờ 49phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

39 đánh giá

5.0

39 đánh giá

  • kwsic님의 프로필 이미지
    kwsic

    Đánh giá 1

    Đánh giá trung bình 5.0

    5

    53% đã tham gia

    이직을 위해 9월부터 코테를 준비할 계획으로 구매했습니다. 퇴근길에 맛 보기로 2강의를 들었는데 정말 머리가 띵했습니다... 얼른 다른 편도 내주세요...건강보다는 강의가 먼저인거 아시죠??

    • 개발자로 취직하기
      Giảng viên

      kwsic님 솔직하고 재밌는 수강평 감사합니다!! :) 건강보다 강의가 중요한데 제가 깜빡했네요 ㅎㅎ 얼른 다음 강의로 돌아올게요! 목표는 8월 내인데 더 앞당겨 볼게요!

  • 김민님의 프로필 이미지
    김민

    Đánh giá 1

    Đánh giá trung bình 5.0

    5

    63% đã tham gia

    이해가 쏙쏙 돼요!

  • sujin9610님의 프로필 이미지
    sujin9610

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

  • eovnfjfpa님의 프로필 이미지
    eovnfjfpa

    Đánh giá 15

    Đánh giá trung bình 5.0

    5

    32% đã tham gia

    코테 공부를 하고 있었는데 DFS, BFS 에서 막히더라구요 이해가 잘 안되고 어려웠거든요, 그나마 BFS 는 이해가 가는데 DFS는 너무 어려웠는데 혈이 뚫리는 것 같습니다!! 양질의 강의를 싸게 해주셔서 감사합니다. 혹시 다른 알고리즘 예를들어 BFS 나 DP나 촬영하실 계획은 없으신가요?? 제발 내주세요 강사님!!!

    • 혈이 뚫릴 정도였다니 감사합니다 eovnfjfpa님 :) 저도 강의를 제발 내고 싶은데 요즘 나름의 새로운 도전을 하느라 많이 늦어지고 있네요 ㅠㅠ 얼른 준비해보겠습니다! 알고리즘/코테 꼭 정복하세요!!

  • 사야님의 프로필 이미지
    사야

    Đánh giá 6

    Đánh giá trung bình 5.0

    5

    63% đã tham gia

Ưu đãi có thời hạn

17.330 ₫

24%

508.201 ₫

Khóa học khác của gaebaljob

Hãy khám phá các khóa học khác của giảng viên!

Khóa học tương tự

Khám phá các khóa học khác trong cùng lĩnh vực!