HackerRank Kotlin Challenge #20

Emine Şa
2 min readMay 5, 2022

20. günden Selamlaar, gelsin bakalım günün soru ve çözümü.

Günün Sorusu: Counting Valleys 🐧

Verilen bir string listesinde bir kişinin yürüdüğü yolun yukarı(U) ve aşağı(D) doğru adım attığı bilgisi veriliyor. Bu durumları takip ederek içinden geçilen vadilerin sayısını bulup döndürmemizi istiyorlar.

  • Bir vadi, deniz seviyesinden aşağı doğru bir basamakla başlayan ve deniz seviyesine bir basamak yukarı çıkılarak biten, deniz seviyesinin altında ardışık basamaklar dizisidir.

Çözüm 1: Kaç tane vadi olduğunu tutan valley adında bir değişken initial ediyoruz. Yukarı ve aşağı yürüdüğünü durumları tutan count adında bir değişken initial ediyoruz. Bir de preCount adında kaçıncı hangi basamakta olduğunu tutan bir değişken initial ediyoruz.

Elimizdeki Stringi her bir değerin aşağı mı yukarı mı olduğunu kontrol etmek için char listesine çevirip listenin üzerinde dönüyoruz.

count değerinin 0'a eşit olması ve önceki durumda aşağı doğru yürünmüş olması durumunda bulunan valley sayısını 1 arttırıyoruz.

Son olarak da bulunan vadi sayısını döndürüyoruz.

Çözüm 2: Burada stringe çevirmeden de kontrolü sağlayabildiğimizi de göstermek istedim. For mapIndexed kullanarak kotline daha yakın bir çözüm elde ettik.

Günün sorusu ve çözümü geldi. Umarım takip edenler için faydalı bir seri oluyordur. Yukarıdaki çözümü githubta da bulabilirsin 🎉

--

--

Emine Şa
Emine Şa

Written by Emine Şa

Software Engineer | Android, Kotlin

No responses yet