Inflearn brand logo image
Inflearn brand logo image
Inflearn brand logo image
Programming

/

Algorithm & Data Structure

[Python] 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) 14 đánh giá

147 học viên

  • gaebaljob
3시간 만에 완강할 수 있는 강의 ⏰
코딩테스트
알고리즘
dfs
파이썬코딩
Algorithm
Coding Test
Python
python3

Đá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 nhanh với các dạng câu hỏi thường gặp!

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?

Dành cho những người không chuyên ngành, từ một nhà phát triển 8 năm
Bài giảng về thuật toán DFS 🪢

DFS (Tìm kiếm theo chiều sâu)

Một trong những cách để khám phá toàn bộ biểu đồ là sử dụng thuật toán ưu tiên 'chiều sâu'.

Khóa học này là khóa học giới thiệu về thuật toán DFS. Mục tiêu của khóa học là cung cấp kinh nghiệm thực tế với các bài toán DFS bằng cách giải quyết những câu hỏi thường gặp nhất . Sau khi tóm tắt ngắn gọn các khái niệm chính, bạn sẽ giải quyết từng loại bài toán để phát triển khả năng nhận biết "đây là bài toán DFS". Khóa học này hướng đến việc bao quát các khái niệm cốt lõi xuyên suốt mọi bài toán, cuối cùng là chinh phục DFS.

Đây là những bình luận trên kênh YouTube mà tôi quản lý.

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 gặp khó khăn khi tự mình 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 những 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.

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 Python 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. Chúng ta hãy tóm tắt các gợi ý cho bài toán DFS.

Khi tôi giảng bài, điều mà sinh viên thường nói là "Em không biết là em phải giải bài toán này bằng DFS."

Do đó, trong bài giảng, chúng ta cùng nhau đọc bài toán được trình bày và tìm câu trả lời cho câu hỏi: "Tôi nên sử dụng từ khóa nào để nghĩ về DFS trong bài toán này?"

2. Tôi sẽ chỉ cho bạn cấu trúc dữ liệu thay đổi khi chương trình tiến triển.

Khóa học này không chỉ đơn thuần là sử dụng sơ đồ đơn giản hay gõ mã để giải thích mọi thứ! Hoạt ảnh được sử dụng để minh họa mọi thứ, từ việc xác định cấu trúc dữ liệu, kích thước và khởi tạo chúng, cho đến cách các giá trị thay đổi từng bước để đi đến câu trả lời đúng.

3. Tóm tắt những điểm cốt lõi trong vấn đề.

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!

📚 Chúng tôi đã lựa chọn và sắp xếp 12 loại bài toán được chọn lọc kỹ lưỡng.

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 (Mức Bạc 4-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à phác thảo 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)

Dù tôi hiểu cảm giác bất lực của bạn
Để tôi chỉ cho bạn một cách dễ hơn 🚩

Xin chào :) Tôi bắt đầu sự nghiệp với tư cách là sinh viên khoa học xã hội và nhân văn chuyên ngành kinh doanh/kinh tế, và hiện tại tôi đã làm việc với tư cách là một nhà phát triển trong 8 năm tại một công ty lớ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 đưa tin về 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++
  • Phiên thảo luận và bình luận trực tiếp về bài kiểm tra thuật toán nền tảng Ellis của Quản lý sản xuất (Python/Java/C++)

Khi nghĩ lại lần đầu tiên học về phát triển cách đây tám năm, tôi thấy thật choáng ngợp và khó khăn, nhưng bằng cách tổ chức và giải quyết vấn đề bằng chiến lược và phương pháp của riêng mình, tôi nghĩ mình đã có thể tìm được việc làm nhanh hơn/tốt hơn một chút.

Đặc biệt nếu bạn là người không chuyên ngành và đ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 ngành giảng dạy, sẽ giúp bạn hiểu chúng dễ dàng hơn. Cảm ơn bạn! :)

Một bài giảng tuyệt vời để cùng nhau xem 📺


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

💾 Vui lòng kiểm tra trước khi tham gia lớp học

  • Bạn có thể sử dụng bất kỳ hệ điều hành hoặc IDE nào cho môi trường thực hành của mình. Tôi đang viết mã bằng VS Code trên Windows 11.
  • 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.
  • Chúng tôi cung cấp PPT được sử dụng trong bài giảng ở định dạng PDF.
  • Bài giảng này giả định bạn đã có hiểu biết cơ bản về cú pháp Python . Những ai đã có kinh nghiệm với DFS sẽ thấy dễ hiểu hơn, nhưng với những ai chưa quen với DFS, chúng tôi đã bao gồm một phần giải thích ngắn gọn, nên đừng lo lắng!

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 đề

  • Những người đang chuẩn bị cho bài kiểm tra viết mã bằng Python

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

  • Ngữ pháp cơ bản của Python (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à

559

Học viên

53

Đánh giá

71

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ờ 59phú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ả

14 đánh giá

5.0

14 đánh giá

  • jobababa님의 프로필 이미지
    jobababa

    Đánh giá 1

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    양질의 강의입니다. 이제 드디어 DFS유형 접근하는 법이 쫌 선명하게 보이기 시작했어요. 완벽하게 제 것으로 만들기 위해서 복습해볼게요! 다음 강의 정말 기대합니다.

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

      jobababa님 최고의 수강평 감사합니다! :)

  • 정구호님의 프로필 이미지
    정구호

    Đánh giá 1

    Đánh giá trung bình 5.0

    5

    84% đã tham gia

  • 아구몬님의 프로필 이미지
    아구몬

    Đánh giá 1

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    백준에서 브론즈 난이도인 구현문제만 풀다가 실버 문제에 도전하려니 알고리즘을 배우지 않고는 손도 못 댈것 같더라구요. 그래서 이런저런 알고리즘을 찍먹하는데 DFS는 진짜 감이 너무 안잡히더라고요. 이해가 완전히 안되는 느낌이 들었어요. 문제를 푸는 분들은 아시겠지만 내가 완전히 이해하지 못하면 절대로 내걸로 만들 수가 없습니다. 그러다가 이 강의를 발견하고 무료 강의를 들어보니 너무 좋더라고요. 덕분에 강의에 포함된 문제는 모두 풀 수 있고 완전히 이해했습니다. 아마 이 강의가 아니었다면 좀 더 많은 시간을 쓰고 스트레스를 받았을 것 같습니다. 감사합니다. 뭔가 더 바라는 게 있다면, 골드 수준까지 문제를 다루어주셨어도 좋았을 것 같습니다. 비슷한 문제도 많아서 조금 아쉬웠어요. 그게 장점이자 단점인게 진짜 DFS 초보고 감을 잡고 싶은 분한테는 이점으로 다가올 수 있지만, 어느정도 감이 잡힌 사람한테는 조금의 아쉬움으로 다가올 수 있는 것 같습니다. 하지만 전 덕분에 DFS 감을 잡아서 너무 좋습니다. 강의 만들어주셔서 감사합니다. 좋은 하루 보내세요!

    • 준성님 안녕하세요 :) 수강평에 이렇게 진심을 담아주시다니 감사합니다. 비슷한 문제가 많다는 부분은 사실 고려하지 못했던 부분이라 조금 더 고민해보고 문제를 추가하거나 골드 문제들을 따로 묶어서 진행해볼게요. 다음에 더 좋은 강의로 찾아 뵙겠습니다!

  • Reo님의 프로필 이미지
    Reo

    Đánh giá 4

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

  • 황보천님의 프로필 이미지
    황보천

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    초보자들을 위한 수업으로서 적절한 강의였습니다.

    • 보천님 댓글 남겨주셔서 너무 감사합니다!! 더 좋은 강의 많이 올릴게요!!

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!