Mülakat Sorusu Çözümü | Kurallı Parantez Oluşturma

  Рет қаралды 7,348

Tech Buddy

Tech Buddy

Жыл бұрын

Bir önceki Junior Yazılımcı Mülakatı videosunda sormuş olduğumuz bir kodlama sorusu vardı. Kurallara uygun rastgele bir parantez yapısı oluşturmak için c# kodu yazılmasını istemiştim. Bu soruya kendimin getirmiş olduğu çözümü bu videoda anlatıyorum.
#techbuddy #junior #interview
#blazor #docker #dotnet
Kanala Abone Olmayı Unutmayın!
To Subscribe: bit.ly/3kvj2vw
Github: github.com/sal...
Discord: / discord
Üyelik ayrıcalıkları için: / techbuddytr

Пікірлер: 35
@salihabdullahkilic
@salihabdullahkilic Жыл бұрын
Bellek tüketiminin daha optimize eden yaklaşımı da göstermeniz çok güzel olmuş, içeriğin için teşekkürler!
@TechBuddyTR
@TechBuddyTR Жыл бұрын
Algoritma sorularında bellek konularına bilhassa önem göstermek gerekiyor. Teşekkürler :)
@murad-dov
@murad-dov Жыл бұрын
Hocam merhabalar elinize sağlık. Bu gibi algoritma sorularına çözerken önceden white board'da nasıl bir mantık yürütüceğinizi anlatırsanız çok güzel olur. Teşekkürler.
@hasankoc1459
@hasankoc1459 Жыл бұрын
Hocam, teşekkür ederim. Bahsettiğiniz basit düşünce mantığını biraz anladığımı söyleyebilirim. Tam olarak gerekli kuralları bulduktan sonra kodlama tarafına en basit şekilde geçmem gerekiyormuş. Emeğiniz için tekrar teşekkür ederim.
@yasaroguzocaktan9005
@yasaroguzocaktan9005 Жыл бұрын
Aklıma her parantez açışında recursive fonksiyon açıp duruma göre kapatmak isteyen bir kod gelmişti. Bu da başka bir videonun konusu :)
@semihartan
@semihartan Жыл бұрын
Your recursive approach is nice. And, here is my linear approach that uses one for loop. I have inspired some points from your nice code as-is, such as inline incrementing, throwing exception etc. (Because you have done the required improvements already.). private static string GenerateParanthesis(int length) { if (length % 2 != 0) throw new ArgumentException("length must be even."); StringBuilder stringBuilder = new StringBuilder(); char[] parans = new char[2] { '(', ')' }; int paranthesisIndex = 0; // 0 for open paran, and 1 for close paran. int openCount = 1; int closeCount = 0; int maxParan = length / 2; stringBuilder.Append(parans[paranthesisIndex]); for(int i = 1; i < length; i++) { if (openCount == maxParan) paranthesisIndex = 1; else if (openCount == closeCount) paranthesisIndex = 0; else if (openCount > closeCount) paranthesisIndex = Random.Shared.Next(2); openCount += paranthesisIndex == 0 ? 1 : 0; closeCount += paranthesisIndex == 1 ? 1 : 0; stringBuilder.Append(parans[paranthesisIndex]); } return stringBuilder.ToString(); }
@TechBuddyTR
@TechBuddyTR Жыл бұрын
If anything can be done by a loop, could be done by recursive as well :) thanks for sharing the code.
@semihartan
@semihartan Жыл бұрын
One note about code: Such a pattern that conforms the rules must be start by an open paranthesis, otherwise the pattern doesnt become valid. Therefore, we append an open paranthesis at first and start the loop from 1.
@TechBuddyTR
@TechBuddyTR Жыл бұрын
@@semihartan yeah, I see that :)
@eppursimuovee
@eppursimuovee 4 ай бұрын
moralim bozuldu ya ben neden aşırı karmaşık bir şey düşündüm ki
@kerimhasanyildirim
@kerimhasanyildirim Жыл бұрын
Ben de böyle bir çözüm yaptım ama bütün validleri alıp aralarından seçiyor. Tam olarak sorunun istediği bir yaklaşım mı emin değilim. public static List xd = new List(); public static string Solve(int length) { GenerateParanthesis(0,0,length/2,""); int random = RandomNumberGenerator.GetInt32(xd.Count); return xd[random]; } static void GenerateParanthesis(int open, int close, int count, string value) { if (count == close) { xd.Add(value); return; } if (open < count) GenerateParanthesis(open + 1, close,count, value + "("); if (close < open) GenerateParanthesis(open, close+1, count, value +")"); }
@elimelimopelek
@elimelimopelek Жыл бұрын
Python ile şöyle çözdüm from random import randint def generatePatternRev01(length): result="" while len(result)
@bBleedingMoon
@bBleedingMoon 10 ай бұрын
çözememişsin doğru bir output vermiyor
@elimelimopelek
@elimelimopelek 10 ай бұрын
@@bBleedingMoon print(generatePatternRev01(7)) >>> ()()()() Hala çalışıyor gözüküyor. Sorun yok.
@bBleedingMoon
@bBleedingMoon 10 ай бұрын
@@elimelimopelek sorun var. output bu değil, mümkün olan bütün parantezleri bir liste halinde dönmeli
@elimelimopelek
@elimelimopelek 10 ай бұрын
Bu mülakatın yapıldığı bir önceki videonun altında tüm olasılıkları bir array içinde dönecek şekilde yaptım, fakat doğru bulunmamıştı. Vaktin olursa bir bak, yorumunu bekliyorum.@@bBleedingMoon
@bBleedingMoon
@bBleedingMoon 10 ай бұрын
bu soru klasiktir, leetcode generate parantheses sorusuna bak orda yüzlerce çözüm var@@elimelimopelek
@nitrogenius
@nitrogenius Жыл бұрын
Saolun hocam, sanki biraz daha Mid seviyeye yakın bir mülakat sorusu olmuş
@TechBuddyTR
@TechBuddyTR Жыл бұрын
Junior için bile kolaydı bence. Türkiye standartlarında değil tabi, büyük şirketlerin mülakatlarına göre :)
@alper337
@alper337 Жыл бұрын
tesekkurler
@metin2fatihi
@metin2fatihi 4 ай бұрын
static readonly char[] arr = new[] { '(' , ')' }; public static string function(int length) { string res = ""; for(int i=0; i< length; i++) { if(i < length/2) res += arr[0]; else res += arr[1]; } return res; } public static void Main(string[] args) { Console.WriteLine(function(6)); } aslında bu kadar basit ve toplamda 10 satır kod ile yapılabilecek bir kodu bu kadar detaylı ve uzun yazmanızın bir anlamı var mı?
@TechBuddyTR
@TechBuddyTR 4 ай бұрын
Sizin kodunuz her çalıştığında sadece '((()))' bu pattern'i üretecek. Ancak '()()()', '()(())' veya '(())()()' gibi pattern'ler de mümkün olmalı.
@mustafakaraduman9281
@mustafakaraduman9281 Жыл бұрын
Ben mülakatta bunu sorsam işe alacak adam bulamam :)
@TechBuddyTR
@TechBuddyTR Жыл бұрын
:-D Ben de anca simülasyonlarda buluyorum işte
@talhatoprak7403
@talhatoprak7403 Жыл бұрын
Merhaba, mülakat videosunu izledim ve gerçekten çok faydalı olduğunu düşünüyorum, ellerinize sağlık. Soruyu bende görüp kendimce bir çözüm bulmak istemiştim. Biraz daha farklı bir yaklaşım ile ilerledim aşağıda java ile kendi oluşturduğum metodu paylaşmak isterim. public String generatePattern(int length){ if(length % 2 != 0) return "invalid request"; if(length==2) return "()"; Random random=new Random(); Boolean randBoolean=random.nextBoolean(); if(randBoolean){ return "(" + generatePattern(length - 2) + ")"; }else { return "()" + generatePattern(length - 2); } }
@hasankoc1459
@hasankoc1459 Жыл бұрын
Bu method rastgelelik konusunda biraz eksik gibi sanki çıktı olarak sadece "()()()" ve "((()))" gibi çıktılar verebilir. Soruda istenilen rastgele ve validate bir durum örnek olarak "(()())" verebilirim.
@talhatoprak7403
@talhatoprak7403 Жыл бұрын
@@hasankoc1459 metodun rastgelelik konusunda aslında bir eksiği yok diyebilirim. Metodu çağırdığımda aldığım çıktılar şu şekilde: ()(()) (()()) ()() ()(()()) ()()()() (((()()(()())))) ()()(()()()()()) (()(()((()(((((()((()())))))))))))
@hasankoc1459
@hasankoc1459 Жыл бұрын
​@@talhatoprak7403 tekrar kontrol ettim de yanlış yorumlamışım üzgünüm :) .
@emreberkgoger6632
@emreberkgoger6632 Жыл бұрын
Ben stack mantığı kullanarak her açık parantez görüldüğünde listeye ekleyip kapalı parantez görüldüğünde listeden eleman silmeyi ve sonunda listede hiç eleman kalmaması gerektiğini düşünmüştüm. Sizce optimal bir yol mu ?
@TechBuddyTR
@TechBuddyTR Жыл бұрын
Bu bize random parantezler vermez ki, sadece bir parantez string inin dengeli olup olmadığının cevabını verir.
@emreberkgoger6632
@emreberkgoger6632 Жыл бұрын
@@TechBuddyTR Evet ben dengeli olmasını düşünmüşüm. Teşekkür ederim.
@user-lz1gx2mh5j
@user-lz1gx2mh5j 9 ай бұрын
string GeneratePattern(int a = 6) { Random random = new Random(); string result = ""; int openParanth = a/2; int closeParanth = a/2; while (result.Length < a) { double randomNumber = random.Next(2, 4); if (randomNumber == 3) { if (closeParanth - 1 >= openParanth) { result +=')'; closeParanth -= 1; } else { result+='('; openParanth -= 1; } } else { if (openParanth > 0) { result += '('; openParanth -= 1; } } } return result; }
[EN] - Junior Dev Mock Interview
1:09:23
Tech Buddy
Рет қаралды 6 М.
C# ile En Kısa Yolu Bulma
26:19
Tech Buddy
Рет қаралды 4,9 М.
UNO!
00:18
БРУНО
Рет қаралды 4,2 МЛН
Joker can't swim!#joker #shorts
00:46
Untitled Joker
Рет қаралды 35 МЛН
Кадр сыртындағы қызықтар | Келінжан
00:16
Dijkstra Algoritması: En Kısa Yolun Sırrı
28:19
Tech Buddy
Рет қаралды 14 М.
.Net Yazılımcı Teknik Mülakatı | Software Developer Ayşe Nur Koçak
28:43
Apibendrinimai | 98 pamoka | C# kursas
5:48
Bitai ir Baitai
Рет қаралды 102
C# Struct vs Class | Class ve Struct Arasındaki Farklar Neler?
26:30
C# Abstract vs Interface | Abstract ve Interface Farkı Nedir?
30:56
The Clever Way to Count Tanks - Numberphile
16:45
Numberphile
Рет қаралды 914 М.
TryCatch Ne kadar Yavaş? | TryCatch vs OneOf
26:45
Tech Buddy
Рет қаралды 6 М.
Мой новый мега монитор!🤯
1:00
Корнеич
Рет қаралды 7 МЛН
Слетела прошивка на LiXiang L7
1:01
Настя ЧПЕК Туман
Рет қаралды 3,4 МЛН
Yanlışlıkla Telefonumu Parçaladım!😱
0:18
Safak Novruz
Рет қаралды 7 МЛН
FIX THE SMARTPHONE WITH A CARDBOARD MIXER!!📱
0:28
Peter Cardboard
Рет қаралды 2,6 МЛН