leetcode

Leetcode nedir? Neden Rekabetçi Programlama Öğrenmeliyiz?

Rekabetçi programlama yazıma hoşgeldiniz, bu yazıda sizlerle paylaşmak istediğim konu competitive programming nedir? analitik düşünme ve problem çözme yeteneği nasıl gelişir? neden DSA(data structures & algorithms) problemleri çözmeliyiz hakkında olacak.Elimden geldiğince bildiklerimi paylaşmaya çalışacağım umarım okurken keyif alırsınız.

Rekabetçi programlama (Competitive Programming) nedir?

En kısa haliyle rekabetçi programlama, kişilerin programlama becerilerini,algoritmik düşünme yetenekleriyle birleştirerek önlerine sunulan problemler hakkında çözüm ürettiği programlama biçimine diyebiliriz. Örneğin kendinizi bir yarış çizgisinin başında hayal edin. Bitiş çizgisine ulaşmak için birden fazla yol olduğunu ve bu yollarda çeşitli engeller olduğunu düşünün. Yarışı en hızlı sürede tamamlayabilmek için bu yollar arasında tercih yapmak durumundasınız. Yollar arasında seçim yaparken hangi etkenleri göz önünde bulundurursunuz?

Giydiğiniz ayakkabıya ,yolun yapısına ,yolun uzunluğuna ,yolda kaç kişinin bulunduğuna ,yoldaki engel sayısına ve daha fazlasına göre yapacağınız seçim değişebilir. Competitive programming de buna benziyor. Size verilen programlama sorusunu istenilen kısıtlamalar altında , zaman ve hafıza karışıklığını göz önünde bulundurarak çözüm üretmeniz istenmektedir. Soruyu doğru çözmenin yanı sıra verdiğiniz çözümün verimliliği de çok önemlidir.  Yani diğer kişilerden sizi ayıran ne kadar hızlı çözüm üretebildiğinizin yanında ne kadar mantıklı çözümler de bulduğunuzdur.

Rekabetçi programlamanın katkıları nedir?

Rekabetçi programlamanın en büyük avantajı analitik düşünme ve algoritma kurma becerinizi inanılmaz derecede arttırmasıdır. Farklı problemler gördükçe ve bu problemlere verilen farklı yanıtları gördükçe ufkunuzun genişleyeceğine inanıyorum.Örneğin iş mülakatlarında geliştirdiğiniz projelerin yanı sıra sizlere DSA(data structures & algorithms) problemleri sorulması çok olasıdır. Üstelik birçok FAANG companies(Amazon,Facebook,Google,Uber,Twitter…) iş görüşmeleri sırasında bu sorulardan sormaktadır. Teamblind sitesi üzerinden kimliği onaylanmış birçok FAANG firması çalışanının kendi şirketleri için yazmış oldukları yazıları kendiniz de okuyabilirsiniz.Youtube üzerinden ‘leetcode’ başlığı altında aratırsanız daha fazla bilgiye ulaşabilirsiniz. Meraklısı için aşağıya bir video bırakıyorum.

 

Rekabetçi programlanın konuları neler?

Rekabetçi programlamaya başlayabilmek için bazı temel konular hakkında bilgi sahibi olmasınız.Bunlardan birkaçı:

  • Array
  • Link-List
  • HashMap
  • Stack
  • Queue
  • Tree

Ayrıca bazı temel algoritmalar hakkında bilgi sahibi olmanız gerekmekte. Örneğin:

  • Arama algoritmaları,
  • DFS
  • BFS
  • Time & Space Complexity

Öğrenmeniz gerekenler gözünüzü korkutmasın çünkü kimse annesinin karnından çıktığında bu konuları bilmiyordu. Zaman içerisinde soruları görerek ve çözerek algoritmalara ve konulara hakim olacaksınız. Bu işte unutulmaması gereken en önemli faktör ”Sabır”.

Leetcode Nedir?

Leetcode, istediğiniz dilde birçok programlama sorusu online olarak çözebileceğiniz aynı zamanda iş görüşmelerine hazırlanabileceğiniz bir sitedir. Bu sitenin daha popüler olmasının sebebi birçok popüler FAANG şirketinin mülakat sorularını ücretsiz bir şekilde paylaşmasıdır. Aynı zamanda birçok kişinin girdiği mülakatlar hakkında deneyimini ve görüşlerini paylaştıkları yerdir. Gerçekten bu sitede popüler soruları çözmek sizi kısa sürede yazılım alanında iş mülakatlarına hazırlar. Muadili hackerrank, edabit gibi siteler bulunmaktadır. İsterseniz bu sitelere de göz atabilirsiniz.

Rekabetçi programlamaya başlayacaklar için Tavsiyeler & Görüşlerim

Ben rekabetçi programlamaya bu yazıdan yaklaşık 10 ay önce , 2022 Ocak ayında Ahmet Buğra Çakıcı‘nın youtube kanalında gördüğüm bir video ile başladım.Henüz üniversitemin 2. yılında olduğum dönemde Data Structures & Algorithms dersini alırken faydası olur aynı zamanda algoritma yeteneğimi geliştiririm diye düşünürek girdim.İnanılmaz derece ufkumu açtı,gördüğüm problemler karşısında acizce ekrana bakmam daha da hırslanmama vesile oldu.Aynı zamanda derslerime de iyi ölçüde fayda sağladı.Birçok algoritma öğrenmeme ve programlama mantığını kavrama seviyemi geliştirdiğine inanıyorum.Aşağıya youtube linkini bırakıyorum.

Yeni başlayacak kişiler için tavsiyeler:

  • Kolay seviye soruları tercih edin.
  • 30 dakika – 1 saat içerisinde çözemediğin sorular için daha fazla uğraşmayın. Sorunun sol üst köşesinde bulunan ”Discuss” üzerinden popüler çözümlere bakabilirsiniz.
  • İlk başlarda çözemediğiniz için hevesiniz kırılabilir. Bırakmadan devam edin , sitede sürekli gördüğüm ve sizin de göreceğiniz olan sözü unutmayın ”keep consistency”.

Benim leetcode hesabıma buradan erişebilirsiniz: https://leetcode.com/dareee/

Görüşlerinizi ve önerilerinizi yorum olarak bırakabilirsiniz. Okuduğunuz için teşekkürler.

 

 

1 thought on “Leetcode nedir? Neden Rekabetçi Programlama Öğrenmeliyiz?”

  1. I got this web site from my buddy who told me on the topic of this web page and now this time
    I am visiting this web page and reading very informative posts here.

Leave a Comment

Your email address will not be published. Required fields are marked *