강의

챌린지

멘토링

로드맵

커뮤니티

[Java] Thuật toán DFS mà sinh viên khối xã hội cũng có thể hiểu! - Phần nhập môn

Đây là bài giảng cơ bản về DFS, giải thích đúng theo cách mà một lập trình viên đang làm việc xuất thân từ khối ngành xã hội đã học để xin việc :) Tôi đã giảm thiểu những bài giảng lý thuyết nhàm chán và chuẩn bị một khóa học giúp bạn học thông qua việc trực tiếp giải bài! Sau khi học khóa này, bạn sẽ có thể tự mình giải các bài toán DFS cấp độ Silver trên Baekjoon.

(5.0) 50 đánh giá

480 học viên

Độ khó Cơ bản

Thời gian 12 tháng

dfs
dfs
Algorithm
Algorithm
Coding Test
Coding Test
Java
Java
dfs
dfs
Algorithm
Algorithm
Coding Test
Coding Test
Java
Java
Thumbnail

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

5.0

5.0

kwsic

53% đã tham gia

Tôi mua cái này với kế hoạch chuẩn bị thay đổi công việc bắt đầu vào tháng 9. Tôi đã học 2 bài trên đường đi làm về để nếm thử, và nó thực sự khiến tôi đau đầu... Phần còn lại hãy làm càng sớm càng tốt... Bạn biết rằng bài giảng đến trước sức khỏe, phải không??

5.0

슬램덩ㅋ

95% đã tham gia

Tôi đã xem nó trên YouTube và bạn chỉ giải thích chi tiết những yếu tố chính. Điều này đã giúp ích rất nhiều cho việc chuẩn bị cho Kote!!

5.0

빵쫀

100% đã tham gia

Đối với những ai đang tìm kiếm một người tìm việc siêu cầu nguyện và chỉ hy vọng rằng sẽ không có vấn đề gì về điều hướng biểu đồ ở Kote, hãy lắng nghe cẩn thận!!!! Tôi đã nghe những cái tên BFS/DFS rất nhiều, nhưng khi được yêu cầu nói cho họ biết chúng là gì, tôi thật ngu ngốc đến mức không thể nói được gì mà chỉ nói "Uh..uh.." Tuy nhiên, sau khi nghe hai ba bài giảng, tôi lập tức mở rộng tầm mắt, và từ khi nghe hết Mục 1, tôi bắt đầu bật cười khi gặp vấn đề về DFS. Kỹ năng giảng dạy của bạn thật xuất sắc.. Wow.. Tôi không nghi ngờ gì rằng bạn là giáo viên số 1 trong thế giới thuật toán.. Chỉ có một lý do duy nhất khiến tôi để lại một bài đánh giá khóa học dài như vậy.. Thưa cô, đó không phải là một bài đánh giá đặc biệt đánh giá khóa học từ một sinh viên, nhưng nó đã tiếp thêm cho tôi một chút sức mạnh sau khi đọc nó và giúp các loại sinh viên khác tìm hiểu thêm. Xin hãy giảng bài... làm ơn..

Bạn sẽ nhận được điều này sau khi học.

  • Đừng học những tiết lý thuyết nhàm chán nữa! Học chiến lược DFS thông qua việc giải bài tập!

  • Chỉ chọn lọc những dạng bài xuất hiện nhiều nhất để tập trung ôn luyện!

  • Khả năng tự mình giải các bài toán DFS

Thuật toán DFS khó hơn bạn nghĩ,
hãy học qua những bài toán thường gặp 💡

Bạn đã từng trăn trở như thế này chưa?

🤔 Làm thế nào để biết bài toán này nên được giải bằng DFS?

🥲 Dù biết DFS nhưng lần nào tôi cũng thấy bế tắc. Có cách giải chung nào không? 

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

Bài giảng thuật toán DFS của nhà phát triển 8 năm kinh nghiệm dành cho người không chuyên
🪢

DFS (Depth First Search) là một trong những phương pháp duyệt toàn bộ đồ thị, là thuật toán ưu tiên duyệt theo “chiều sâu”.

Đây là khóa học nhập môn về thuật toán DFS, với mục tiêu trực tiếp trải nghiệm các bài toán DFS bằng cách giải những bài thường được ra nhiều nhất. Sau khi tóm tắt thật ngắn gọn các khái niệm cốt lõi, bạn sẽ giải các bài toán thuộc từng dạng để rèn luyện khả năng nhận ra rằng "đây là một bài toán DFS", đồng thời tìm hiểu trọng tâm xuyên suốt mọi bài toán và chinh phục DFS :D

Khóa học này sẽ vô cùng hữu ích với những bạn đã học thuật toán DFS nhưng vẫn chưa thực sự hiểu rõ, hoặc gặp khó khăn trong việc tự mình nghĩ ra hướng giải. Vì đây là khóa học do một lập trình viên đang làm việc trong ngành được 8 năm, xuất thân từ khối ngành xã hội, xây dựng dành cho những người không chuyên, nên tôi xin đảm bảo rằng bạn sẽ dễ hiểu hơn bất kỳ khóa học nào khác. Dưới đây là những bình luận trên kênh YouTube do tôi vận hành.


Tôi khuyên dùng cho những người như sau 🙋

Những bạn biết cú pháp Java cơ bản nhưng mới bắt đầu chuẩn bị cho kỳ thi lập trình.

Những bạn đã thử tự mình giải bài DFS nhưng vẫn chưa thực sự nắm được cách làm

Những bạn dù đã học các bài giảng lý thuyết nhưng khi thực sự nhìn vào đề bài lại cảm thấy bế tắc.


Đặc điểm của khóa học ✨

#1.
Tổng hợp các
gợi ý cho thấy đây là bài toán DFS.

 

Điều mà các học viên thường nói trong khóa học là “Em không biết bài này phải giải bằng DFS.” Vì vậy, chúng ta sẽ cùng đọc đề bài trước và trả lời câu hỏi “Khi nhìn thấy từ khóa nào trong bài này, chúng ta nên nghĩ đến DFS?”

#2.
Chúng tôi sẽ cho bạn thấy
cấu trúc dữ liệu
thay đổi theo tiến trình của chương trình.

 

Đây không phải là một khóa học thay thế phần giải thích bằng những hình vẽ đơn giản hoặc chỉ vừa gõ code vừa giải thích bằng lời!

Chúng tôi sử dụng hình ảnh động để minh họa từ việc xác định kích thước và cách khởi tạo cấu trúc dữ liệu, cho đến cách các giá trị thay đổi theo từng bước để tìm ra đáp án.

#3.
Hãy tổng hợp
những điểm cốt lõi xuyên suốt các bài toán.

 

Mặc dù cách triển khai có khác nhau tùy từng bài toán, điểm chung của các bài toán yêu cầu thuật toán DFS vẫn không thay đổi. Thông qua khóa học, chúng ta sẽ phân loại và tổng hợp những điểm cốt lõi để giải tốt các bài toán DFS, đồng thời dành thời gian củng cố và hệ thống hóa trọng tâm trong từng bài toán.

Sau khi hoàn thành quá trình này, ngay cả khi gặp một bài toán DFS mới, bạn cũng có thể nhanh chóng xác định phần nào là điểm chung và phần nào khác biệt, từ đó tự mình giải quyết các bài toán DFS!


Nội dung học tập 📚

Trong khóa học, chúng tôi đã tuyển chọn 12 bài toán mà nhiều người đã giải và gặp khó khăn nhất trong số các bài toán nhập môn DFS (bậc Silver 4–2) được đăng trên Baekjoon. Sau đó, chúng tôi chia chúng thành 2 dạng chi tiết và hệ thống hóa các khái niệm cốt lõi cần thiết cho từng dạng. Các dạng bài và bài toán cụ thể như sau.

Dạng 1. Dạng bài tìm các thành phần liên thông

  • Virus (2606) (Công khai miễn phí)
  • Số lượng thành phần liên thông (11724)
  • Bài học thuật toán - Tìm kiếm theo chiều sâu 1 (24479)
  • Lớp học thuật toán - Duyệt theo chiều sâu 2(24480)
  • DFS và BFS (1260)
  • Tính bậc họ hàng (2644)
  • Tìm cha của cây (11725)

Dạng 2. Tìm các đối tượng cùng loại

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




Câu hỏi &A dự kiến 💬

Q. Tại sao khóa học lại ngắn như vậy?

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

Q. Có thể hiểu được DFS dù không có nhiều bài tập không?

Vì những lý do trên, tôi đã chia khóa học thành các phần nhỏ, và vì vậy, 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 về các bài toán hạng Gold và Platinum. Chính vì thế, tôi cho rằng nếu nói rằng “chỉ cần học khóa này là có thể giải được mọi bài toán DFS!” thì đó là hành vi đánh lừa học viên. (Bởi suy cho cùng, việc tự mình suy nghĩ và trăn trở là điều không thể thiếu trong quá trình học tập.) Tuy nhiên, điều tôi có thể cam kết là không có khóa học nào giúp bạn nhập môn DFS một cách dễ dàng như khóa học này, và sau khi hoàn thành khóa học, bạn sẽ có thể tự học và tự hiểu DFS. Vì vậy, tôi có thể tự tin giới thiệu khóa học này đến những người không cần các video chỉ đơn thuần hướng dẫn lời giải, mà muốn học cách “tự câu cá”.

Q. Trên YouTube cũng có lời giải mà, chẳng phải giống nhau sao?

Mạch nội dung chính là giống nhau, nhưng do đặc thù của YouTube, video không thể quá dài nên phần lớn các giải thích bổ sung đã được lược bỏ. Vì vậy, nhiều người đăng ký cũng đặt câu hỏi và bày tỏ sự tiếc nuối trong phần bình luận. Để giải tỏa những điều đáng tiếc đó, tôi đã thực hiện khóa học trực tuyến này.

Tôi đã biên soạn nội dung sao cho bạn có thể hiểu mọi điều tôi biết một cách dễ dàng và ngắn gọn nhất. Trên thực tế, phần về virus và vấn đề cải thảo hữu cơ cũng được cung cấp miễn phí trong khóa học đó và đã được đăng tải trên YouTube. Bạn có thể trực tiếp xem cách nội dung được tóm tắt ngắn gọn trên YouTube được giải thích chi tiết hơn như thế nào trong khóa học, từ đó sẽ dễ dàng đánh giá hơn, nên mong bạn tham khảo!

Q. Nếu đặt câu hỏi thì mất bao lâu mới nhận được phản hồi?

Nếu không có việc đặc biệt, tôi sẽ trả lời trong vòng 24 giờ tính theo giờ làm việc, và dù muộn nhất thì cũng sẽ trả lời trong vòng 72 giờ. Bản thân tôi cũng đã tham gia nhiều khóa học trực tuyến và nhận thấy rằng giảng viên trả lời càng nhanh thì nhịp độ học tập cũng càng tăng, vì vậy tôi cho rằng học trực tuyến đôi khi còn hiệu quả hơn các khóa học ngoại tuyến. Tuy nhiên, tôi cũng hiểu rất rõ rằng khi tốc độ trả lời của giảng viên chậm lại thì động lực học tập cũng sẽ giảm theo, nên tôi kiểm tra bình luận mỗi ngày và trả lời các câu hỏi!

Q. Có những câu hỏi nào không nên hỏi không?

Tôi luôn nói điều này trong mỗi video, mọi câu hỏi đều được hoan nghênh. Bởi vì phần lớn những điều tôi thắc mắc thì các học viên khác cũng sẽ thắc mắc. Tuy nhiên, nếu đặt ra một vài quy tắc thì câu hỏi sẽ trở nên hữu ích cho tất cả mọi người.

1. Hãy để lại câu hỏi trong video liên quan đến câu hỏi đó!

    • Vì mỗi video đều có nội dung riêng, nên nếu bạn đăng câu hỏi vào video tương ứng để mọi người có thể giúp đỡ lẫn nhau thì đó sẽ là những câu hỏi hữu ích cho tất cả mọi người.

2. Vui lòng gửi các câu hỏi như tư vấn cuộc sống, việc làm, v.v. qua mục cố vấn.

    • Vì những câu hỏi như thế này có thể có câu trả lời khác nhau tùy vào hoàn cảnh của mỗi người, nên nếu bạn đặt câu hỏi cụ thể hơn về tình huống của mình, tôi cũng có thể đưa ra hướng dẫn chính xác. Nếu trả lời dưới dạng câu hỏi công khai, tôi chỉ có thể đưa ra những câu trả lời mơ hồ, vì vậy hãy để lại những nội dung này trong phần mentoring, tôi sẽ tận tâm giải đáp.
    • Liên kết cố vấn: https://inf.run/kCsp

3. Các câu hỏi kiểu "Tại sao không hoạt động?" cũng vui lòng gửi qua mục mentoring.

    • Đôi khi vì quá bối rối, bạn sao chép và dán toàn bộ mã rồi nhờ xem giúp. Những câu hỏi như vậy khó giúp ích cho những người khác, đồng thời vì tình huống của mỗi người đặt câu hỏi đều khác nhau, nên nếu bạn liên hệ riêng qua mục cố vấn, tôi sẽ giải thích cả chỗ nào sai, vì sao sai và cần sửa như thế nào!
    • Liên kết cố vấn: https://inf.run/kCsp

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.
  • Học viên có thể sử dụng bất kỳ OS/IDE nào.
  • Tuy nhiên, nếu bạn chuẩn bị sẵn môi trường để trực tiếp viết mã và Build/Debug trước khi tham gia, bạn sẽ có thể theo dõi bài giảng dễ dàng hơn.
  • Những bạn cảm thấy việc thiết lập chi tiết phiền phức hoặc khó khăn được khuyê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 các PPT được sử dụng trong bài giảng dưới dạng PDF.

Kiến thức nền tảng và lưu ý

  • Giả sử bạn đã hiểu cú pháp cơ bản của Java, chúng ta sẽ tiến hành bài giảng.
  • Nếu bạn đã từng làm quen với DFS dù chỉ một lần thì sẽ dễ dàng hơn, nhưng cũng có phần giải thích cơ bản ngắn gọn dành cho những bạn chưa biết DFS, nên bạn không cần lo lắng nhé!

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 khối xã hội chuyên ngành Quản trị kinh doanh/Kinh tế, và hiện đang làm việc với tư cách là một lập trình viên tại một tập đoàn lớn với 8 năm kinh nghiệm. Nghĩ lại khoảng thời gian lần đầu học lập trình cách đây 8 năm, tôi nhớ đó là một quãng thời gian thật mông lung và vất vả. Tuy nhiên, nhờ hệ thống hóa kiến thức và giải quyết vấn đề theo chiến lược, phương pháp của riêng mình, có lẽ tôi đã có thể tìm được việc nhanh hơn và tốt hơn một chút. Đặc biệt, nếu bạn là người không chuyên gặp nhiều khó khăn với các bài kiểm tra lập trình, chắc hẳn bạn sẽ dễ dàng hiểu được nội dung khi học khóa học này, do một người cũng không chuyên hướng dẫn. Rất mong nhận được sự ủng hộ của các bạn! :)

Thông tin lý lịch/Portfolio/video cá nhân

  • Lập trình viên tại tập đoàn lớn với 8 năm kinh nghiệm
  • Nhà sáng tạo nội dung YouTube về việc làm trong ngành phát triển phần mềm (https://www.youtube.com/@gaebal )
  • Giảng viên khóa học nhập môn C++ trên nền tảng Programmers
  • Phụ trách các buổi học trực tiếp về QuizChip thuật toán trên nền tảng elice và biên soạn tài liệu giải thích

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

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

  • Những người lần đầu làm quen với bài kiểm tra lập trình/thuật toán DFS

  • Những ai từng cảm thấy đầu óc như muốn nổ tung khi cố gắng hiểu hàm đệ quy

  • Người mới bắt đầu với bài kiểm tra coding, dù biết ngữ pháp nhưng lại cảm thấy vô cùng bối rối trước các bài toán

  • Những bạn hiểu khái niệm DFS nhưng khi nhìn đề bài lại không nghĩ ra cách giải và cảm thấy bế tắc

  • Dành cho những ai đã chán lý thuyết và muốn cùng nhau giải bài tập

  • Những người đang chuẩn bị cho kỳ thi lập trình bằng Java

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

  • Cú pháp cơ bản của Java (câu lệnh điều kiện, câu lệnh lặp, câu lệnh nhập/xuất, v.v.)

Xin chào
Đây là gaebaljob

663

Học viên

70

Đánh giá

76

Trả lời

5.0

Xếp hạng

2

Các khóa học

Chào bạn, tôi là Giảng viên "Trở thành lập trình viên", người chuyên dạy các khóa học thuật toán mà ngay cả sinh viên khối Xã hội cũng có thể hiểu được :)
Xuất thân là một sinh viên khối Xã hội, hiện tại tôi đã là lập trình viên với 8 năm kinh nghiệm tại một tập đoàn lớn. Nhớ lại những ngày đầu mới tiếp cận với lập trình và chuẩn bị cho các kỳ thi Coding Test đầy mông lung, tôi luôn trăn trở làm thế nào để giải thích mọi thứ dễ dàng hơn một chút, để ngay cả những người không chuyên thuộc khối Xã hội như tôi cũng có thể hiểu và tiếp thu được các công nghệ mới, và đó là lý do tôi tạo ra các bài giảng này.
Tôi cũng đang triển khai các bài giảng miễn phí thông qua YouTube, rất mong nhận được sự quan tâm của các bạn!
https://www.youtube.com/@gaebal

Thêm

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ả

50 đánh giá

5.0

50 đánh giá

  • alsgh1552님의 프로필 이미지
    alsgh1552

    Đánh giá 4

    ∙

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    Khi giải bài đầu tiên, tôi đã tự hỏi liệu mình có thể giải bài tiếp theo mà không cần xem lời giải không, nhưng sau khi hiểu hoàn toàn bài đầu tiên, tôi đã bắt đầu cảm nhận được cách giải các bài tiếp theo. Đó là thời gian tôi hoàn toàn nắm bắt được dạng bài dfs. Tôi hy vọng sẽ có thêm các bài giảng về thuật toán khác! Tôi sẽ chờ đợi.

    • gaebaljob
      Giảng viên

      Bạn đã nắm bắt hoàn toàn, thật mừng. Cảm ơn bạn!! Cố gắng học nhé! :)

  • tgtgtg88928740님의 프로필 이미지
    tgtgtg88928740

    Đánh giá 1

    ∙

    Đánh giá trung bình 5.0

    5

    63% đã tham gia

    Hiểu rất rõ ràng!

    • gaebaljob
      Giảng viên

      Cảm ơn Kim Min đã để lại đánh giá tốt :) Chúc bạn học tập thật tốt!

  • eovnfjfpa4963님의 프로필 이미지
    eovnfjfpa4963

    Đánh giá 16

    ∙

    Đánh giá trung bình 5.0

    5

    32% đã tham gia

    Tôi đang học 코테 thì bị vướng ở DFS, BFS, tôi không hiểu rõ và thấy khó lắm. Tôi hiểu được BFS một chút, nhưng DFS thì quá khó, giờ thì như thể mọi thứ đang thông suốt!! Cảm ơn vì đã cung cấp khóa học chất lượng cao với giá rẻ. Không biết thầy có kế hoạch quay thêm các thuật toán khác như BFS hoặc DP không ạ?? Làm ơn ra thêm đi ạ thầy ơi!!!

    • gaebaljob
      Giảng viên

      Đến mức thông huyết luôn, cảm ơn bạn eovnfjfpa ạ :) Tôi cũng rất muốn ra bài giảng mà dạo này đang thử thách bản thân với vài cái mới nên bị chậm trễ nhiều quá 😭😭 Tôi sẽ chuẩn bị sớm thôi ạ! Nhất định phải chinh phục được thuật toán/code test nhé!!

  • maestrois님의 프로필 이미지
    maestrois

    Đánh giá 25

    ∙

    Đánh giá trung bình 5.0

    5

    63% đã tham gia

    Thật là một bài giảng tuyệt vời!!

    • gaebaljob
      Giảng viên

      Cảm ơn LuckyStrike vì đã đánh giá cao khóa học của chúng tôi! :)

  • kwsic6676님의 프로필 이미지
    kwsic6676

    Đánh giá 1

    ∙

    Đánh giá trung bình 5.0

    5

    53% đã tham gia

    Tôi mua cái này với kế hoạch chuẩn bị thay đổi công việc bắt đầu vào tháng 9. Tôi đã học 2 bài trên đường đi làm về để nếm thử, và nó thực sự khiến tôi đau đầu... Phần còn lại hãy làm càng sớm càng tốt... Bạn biết rằng bài giảng đến trước sức khỏe, phải không??

    • gaebaljob
      Giảng viên

      Cảm ơn kwsic vì bài đánh giá khóa học trung thực và thú vị của bạn!! :) Bài giảng quan trọng hơn sức khỏe, nhưng tôi quên mất haha. Tôi sẽ quay lại sớm cho bài giảng tiếp theo! Mục tiêu là trong tháng 8, nhưng tôi sẽ cố gắng tiến tới!

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!

Miễn phí