In dit artikel zullen we enkele van de belangrijke Hackerrank vragen en uitdagingen bespreken die in verschillende wervingen voor productbedrijven worden gesteld. Als je geïnteresseerd bent in programmeren, dan is deze lijst met belangrijke Hackerrank-vragen een must om op te lossen.
Hackerrank-vragen met oplossingen
Hier zijn enkele van de meest gestelde Hackerrank-vragen met oplossingen.
- Aantal eilanden met behulp van DFS
- Subset Som Probleem
- Rat in een doolhof probleem
- Aantal manieren om de n-de trap te bereiken
- Sudoku probleem
- Roteer de matrix door K keer
- 0-1 Knapzakprobleem
- Ontdek een lus in een gelinkte lijst
- Redundante accolades
- Gelijkzijdige haakjescontrole
- Middelman van twee gesorteerde arrays
Vraag 1:
Voorbeeld Hackerrank Vragen: Bank Compare
Er zijn twee banken; Bank A en Bank B. Hun rentetarieven verschillen. U hebt van beide banken aanbiedingen ontvangen met betrekking tot het jaarlijkse rentepercentage, de looptijd en de variaties van het rentepercentage over de gehele looptijd.
U moet het aanbod kiezen dat u de minste rente kost en het andere afwijzen. Reken het uit en maak een verstandige keuze.
De aflossing van de lening vindt plaats op een maandelijkse frequentie en Equated Monthly Installment (EMI) wordt berekend met behulp van de onderstaande formule :
EMI = loanAmount * monthlyInterestRate / ( 1 – 1 / (1 + monthlyInterestRate)^(numberOfYears * 12))
Beperkingen:
1 <= P <= 1000000
1 <=T <= 50
1<= N1 <= 30
1<= N2 <= 30
Input Formaat:
- Eerste regel : P – hoofdsom (Leningbedrag)
- Tweede regel : T – Totaal Looptijd (in jaren).
- Derde regel: N1 is het aantal slabs van rentevoeten voor een bepaalde periode door Bank A. De eerste slab begint vanaf het eerste jaar en de tweede slab begint vanaf het einde van de eerste slab enzovoort.
- De volgende N1-regel zal de rentevoeten en hun periode bevatten.
- Na N1-regels krijgen we N2 d.w.z. het aantal slabs dat door de tweede bank wordt aangeboden.
- De volgende N2 regels zijn het aantal rentevakken voor een bepaalde periode van Bank B. Het eerste vak begint bij het eerste jaar en het tweede vak begint aan het eind van het eerste vak enz.
- De periode en het tarief worden door een spatie gescheiden.
Output Format: Uw beslissing – Bank A of Bank B.
Uitleg:
Staalingang 1:
100002035 9.510 9.65 8.5310 6.95 8.55 7.9
Sample Ouput 1:
Bank B
Sample Input 2:
50000026313 9.53 6.910 5.6314 8.56 7.46 9.6
Sample Output 2:
Bank A
Oplossing:
#include <stdio.h>#include<math.h>int main() { double p,s,mi,sum,emi,bank,sq; int y,n,k,i,yrs,l=0; scanf("%lf",&p); scanf("%d",&y); for(k=0;k<2;k++) { scanf("%d",&n); sum=0; for(i=0;i<n;i++) { scanf("%d",&yrs); scanf("%lf",&s); mi=0; sq=pow((1+s),yrs*12); emi= (p*(s))/(1-1/sq); sum= sum + emi; } bank=sum; } if(bank<bank) printf("Bank A"); else printf("Bank B"); return 0;}
Voorbeeld Hackerrank vragen: One Egg
“One Egg” is een eierleverancier die eieren levert aan detailhandelaars. Zij hebben M eierklassen. Elke klasse kan N aantal eieren bevatten (N kan hetzelfde zijn of van klasse tot klasse verschillen). Zij aanvaarden een bestelling per post voor X eieren. In antwoord daarop bevestigen zij of zij de eieren kunnen leveren met een “Dank u”-briefje en het aantal eieren, of met een “Sorry”-briefje en het aantal eieren dat zij niet kunnen leveren. Zij vermelden ook de verdeling van de eieren over de klassen die zij zullen leveren. De bestelde eieren worden in de verschillende klassen onderverdeeld, waarbij het hoogste aantal eieren het eerst wordt onderverdeeld, het saldo vervolgens wordt onderverdeeld in de op één na hoogste klasse, enzovoort. Het bedrijf is ook een beetje bijgelovig. Als het aantal bestelde eieren groter is dan of gelijk aan het totale aantal eieren in voorraad, dan houden ze één ei achter en antwoorden terug met het “Sorry” briefje met het totale aantal eieren in voorraad min één en de verdeling van de eieren per klasse.
Note: Als de klassen hetzelfde aantal eieren hebben, moet de eerst ingevoerde klasse worden geselecteerd om aan te passen.
Invoerformaat:
De eerste regel bevat twee door spaties gescheiden gehele getallen die de respectieve waarden van M (het aantal eierklassen) en X, het aantal bestelde eieren, aangeven De volgende M regels bevatten elk een geheel getal dat het aantal beschikbare eieren in elke klasse aangeeft
Output Format:
De eerste regel moet zijn, als X minder is dan het totale aantal eieren, druk dan af ” Dank u, uw bestelling voor X eieren is geaccepteerd” Anders als X groter is dan of gelijk aan het totale aantal eieren, druk dan af ” ” Sorry, we kunnen alleen (totaal aantal eieren in voorraad -1) eieren leveren” T hen M regels met 3 kolommen: Eerste kolom – Aantal beschikbare eieren in elke klasse Tweede kolom – Eieren toegewezen tegen elke klasse voor die bestelling Derde kolom – Saldo Eieren tegen elke klasse
Constraints:
1 ≤ M ≤ 20 N ≥ 1 X ≥ 1
Staalinvoer 1:
5 150 50 15 80 10 5
Sample Output 1:
Thank you, your order for 150 eggs are accepted 50 50 0 15 15 0 80 80 0 10 5 5 5 0 5
Uitleg:
De totale bestelling van 150 eieren is minder dan het totale aantal eieren 50+15+80+10+5 = 160. Vandaar het bedankbericht. 150 werd eerst aangepast tegen de klasse met het eerste hoogste aantal eieren 80. Saldo van 150-80 = 70 werd aangepast tegen de tweede hoogste klasse van 50. Saldo van 70-50 = 20 vervolgens aangepast tegen 15. Saldo van 20-15 = 5 vervolgens aangepast tegen 10 waardoor er 5 eieren in die klasse overbleven.
Bemonsteringsuitgang 2:
4 250 80 50 70 20
Bemonsteringsuitgang 2:
Bemonsteringsuitgang 2:
Sorry, we can only supply 219 eggs 80 80 0 50 50 0 70 70 0 20 19 1
Uitleg:
De totale bestelling van 250 eieren was groter dan het totale aantal eieren 80+50+70+20 = 220. Vandaar de sorry-boodschap. 250 werd eerst aangepast tegen de klasse met het eerste hoogste aantal eieren 80. Saldo van 250-80 = 170 werd aangepast tegen de tweede hoogste klasse van 70. Saldo van 170-70 = 100 werd vervolgens aangepast tegen 50. Saldo van 100-50 = 50 werd vervolgens aangepast ten opzichte van 20. Aangezien het saldo groter is dan de laatste eierklasse blijft er op één ei na niets over in die laatste klasse.
Oplossing:
#include <stdio.h>int main() {int m,x,i,a,sum=0,s;scanf("%d %d",&m,&x);for(i=0;i<m;i++){scanf("%d",&a);sum=sum+a;}if(sum>x) printf("Thank you, your order for %d eggs are accepted\n",x);else{ printf("Sorry, we can only supply %d eggs\n",sum-1); x=sum-1;}for(i=0;i<m;i++){ if(x>=a) { printf("%d\t%d\t%d\n",a,a,0); x=x-a; } else if(x<a) { s=a-x; printf("%d\t%d\t%d\n",a,x,s); x=0; } else if(x==0) printf("%d\t%d\t%d\n",a,0,a); } return 0;}
Vraag 3:
Voorbeeld Hackerrank vragen: Milk Man and His Bottles
Een melkboer serveert melk in verpakte flessen van verschillende grootte. De mogelijke maten van de flessen zijn {1, 5, 7 en 10} liter. Hij wil de gewenste hoeveelheid leveren met zo weinig mogelijk flessen, ongeacht de grootte. Uw doel is hem te helpen het minimum aantal flessen te vinden dat nodig is om aan de gegeven vraag naar melk te voldoen.
Invoerformaat:
- De eerste regel bevat het aantal testgevallen N
- De volgende N regels bevatten elk een positief geheel getal Li dat overeenkomt met de vraag naar melk.
Uitvoerformaat:
Voor elke invoer Li, druk het minimum aantal flessen af dat nodig is om aan de vraag te voldoen
Beperkingen:
1 <= N <= 1000 Li > 0 1 <= i <= N
Sample Input and Output:
2 7
Uitleg:
Aantal testgevallen is 2
Voor 17 = 10*1 + 7*1 = 2
Voor 65 = 10*6 + 5*1 = 7
Een paar voorbeelden meer:
Voor 99 = 10*9 + 7*1 + 1*2 = 12
Voor 63 = 10*6 + 1*3 = 9
Oplossing:
#include <stdio.h>int main(){ int n,b=0,i,m,s=0; scanf("%d",&m); for( i=0;i<m;i++) { scanf("%d",&n); b=n/10; n=n%10; s=s+b; b=0; b=n/7; n=n%7; s=s+b; b=0; b=n/5; n=n%5; s=s+b; b=0; b=n/1; s=s+b; printf("%d\n",s); s=0; b=0; } return 0;}
Vraag 4:
Voorbeeld Hackerrank vragen: Bride Hunting
Sam is een begeerlijke vrijgezel. Hij besluit zich in het leven te settelen en een gezin te stichten. Hij gaat op bruidenjacht. Hij wil trouwen met een meisje dat ten minste een van de 8 onderstaande kwaliteiten bezit:-
1) Het meisje moet rijk zijn.
2) Het meisje moet ingenieur/dokter zijn.
3) Het meisje moet mooi zijn.
4) Het meisje moet 5,3″ lang zijn.
5) Het meisje moet in een MNC werken.
6) Het meisje moet extrovert zijn.
7) Het meisje mag geen bril hebben.
8) Het meisje moet aardig en eerlijk zijn.
Hij is op zoek naar een bruid die enkele of alle van de 8 bovengenoemde eigenschappen bezit. Bij het zoeken naar een bruid kan het zijn dat hij meer dan één gegadigde vindt om zijn vrouw te worden.
In dat geval wil hij een meisje kiezen waarvan het huis het dichtst bij zijn huis staat. Zoek een bruid voor Sam die zoveel mogelijk kwaliteiten heeft. Als er meerdere gegadigden zijn die zich op gelijke afstand van het huis van Sam bevinden; druk dan
“”Polygamie niet toegestaan””.
In het geval dat er geen geschikt meisje aan de criteria voldoet, print dan “”Geen geschikt meisje gevonden””
Gegeven een Matrix N*M, staat het huis van Sam op (1, 1). Het wordt aangeduid met 1. In dezelfde matrix wordt de locatie van een huwbaar meisje ook aangeduid met 1. Vandaar dat 1 op locatie (1, 1) niet mag worden beschouwd als de locatie van een huwbaar meisje.
De kwaliteiten van dat meisje, volgens Sam”s criteria, moeten worden gedecodeerd uit het aantal niet-nul buren (max 8-weg) dat ze heeft. Vergelijkbaar met de voorwaarde hierboven, moet 1 op plaats (1, 1) niet beschouwd worden als de kwaliteit van een meisje. Zie het gedeelte Voorbeeld voor een beter begrip.
Vind Sam, een geschikte Bruid en druk de rij en kolom van de bruid af, en ontdek het aantal kwaliteiten dat de Bruid bezit.
NOTE: De afstand wordt berekend in aantal hops in elke richting, d.w.z. (Links, Rechts, Boven, Onder en Diagonaal)
Constraints:
2 <= N,M <= 10^2
Input Format:
- Eerste regel bevat de rij (N) en kolom (M) van de huizen.
- De volgende N regels bevatten de gegevens over de meisjes en hun kwaliteiten.
Output Format:
Het zal de rij en kolom van de bruid bevatten, en het aantal kwaliteiten dat de bruid bezit, gescheiden door een dubbele punt (d.w.z. :).
Voorbeeld invoer 1:
2 9
1 0 1 1 0 1 1 1
0 0 1 0 1 0 1
Voorbeeld uitvoer 1:
Uitleg:
Het meisje en de kwaliteiten zijn aanwezig op (1,3),(1,4),(1,6),(1,7),(1,8),(1,9),(2,4),(2,6),(2,9).
Het meisje aanwezig op (1,3) heeft 2 kwaliteiten (nl. (1,4)en (2,4)).
Het meisje aanwezig op (1,4) heeft 2 kwaliteiten.
Het bruidje aanwezig op (1,6) heeft 2 kwaliteiten.
De Bruid aanwezig op (1,7) heeft 3 kwaliteiten.
De Bruid aanwezig op (1,8) heeft 3 kwaliteiten.
De Bruid aanwezig op (1,9) heeft 2 kwaliteiten.
De Bruid aanwezig op (2,4) heeft 2 kwaliteiten.
De Bruid aanwezig op (2,6) heeft 2 kwaliteiten.
De bruid aanwezig op (2,9) heeft 2 kwaliteiten.
Zo zien we dat er twee kanshebbers zijn die de maximale kwaliteiten hebben, de een staat op (1,7) en de ander op (1,8).
Het meisje dat het dichtst bij het huis van Sam staat, staat op (1,7). Zij is dus de bruid.
Hence, de output zal zijn 1:7:3.
Voorbeeld invoer 2:
6 6
1 0 0 0 0 0
0 0 0 0 0 0
0 0 1 1 1 0
0 0 1 1 1 0
0 0 1 1 0
0 0 0 0
Staaluitvoer 2:
Uitleg:
De bruid en kwaliteiten zijn aanwezig op (3,3),(3,4),(3,5),(4,3),(4,4),(4,5),(5,3),(5,4),(5,5)
De Bruid aanwezig op (3,3) heeft 3 kwaliteiten (nl.nl. (3,4),(4,3) en (4,4)).
De Bruid aanwezig op (3,4) heeft 5 kwaliteiten.
De Bruid aanwezig op (3,5) heeft 3 kwaliteiten.
De Bruid aanwezig op (4,3) heeft 5 kwaliteiten.
De Bruid aanwezig op (4,4) heeft 8 kwaliteiten.
De Bruid aanwezig op (4,5) heeft 5 kwaliteiten.
De Bruid aanwezig op (5,3) heeft 3 kwaliteiten.
De Bruid aanwezig op (5,4) heeft 5 kwaliteiten.
De Bruid aanwezig op (5,5) heeft 3 kwaliteiten.
Zoals we zien, heeft het meisje aanwezig op (4,4) het maximum aantal Kwaliteiten. Zij is dus de bruid.
Hence, de output zal zijn 4:4:8.
Oplossing:
#include<stdio.h>int main(){ int n,m,i,g,j,p,q,max=0,cnt=0,k=1,c=0,u=1,x,y,t1,min=0, sc,e,f,ct=0,a,count=0,t2=0,t=0; scanf("%d %d",&n,&m); for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { scanf("%d",&g); } } g=0; for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { cnt=0; if(g==1) { t++; for(p=i-1;p<=i+1;p++) { for(q=j-1;q<=j+1;q++) { if(g==1) { cnt++; } } }cnt=cnt-1; a=cnt; k++; } } } for(k=1;k<=t;k++) { if(a>max) max=a; } if(max==0) { printf("No suitable girl found"); return 0; } for(k=1;k<=t;k++) { if(a==max) c++; } for(k=1;k<=t;k++) { t2=0; if(a==max) { for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { if(g==1) t2++; if(t2==k) { x=i; y=j; u++; } } } } } t1=u-1; if(c==1) printf("%d:%d:%d",x,y,max); else { for(u=1;u<=t1;u++) { sc=sqrt(((x-1) * (x-1)) + ((y-1)*(y-1)));; } min=sc; for(u=1;u<=t1;u++) { if(sc<min) min=sc; } for(u=1;u<=t1;u++) { if(sc==min) count++; } if(count>1) printf("Polygamy not allowed"); if(count==1) { for(u=1;u<=t1;u++) { if(sc==min) printf("%d:%d:%d",x,y,max); } } } return 0;}
Je kunt deze ook controleren:
- Must Practice Data Structures & Algoritmen vragen
- Must Practice C programmeren vragen