In this article, we will discuss some important Hackerrank questions and challenges asked in various product company recruitments.今回の記事では、様々な製品会社の採用で出題されるHackerrankに関する重要な問題・課題について説明をしていきます。 もしあなたがプログラミングに興味がある人なら、この重要なHackerrankの質問のリストは解決しなければなりません。
Hackerrank Questions with Solutions
Here are some most asked Hackerrank questions with solutions.The Hackerrank Questions with a lot to do it.
- DFSを使った島の数
- サブセットサム問題
- 迷路の中のネズミ問題
- n番目の階段への到達方法の数
- 数独問題
- 行列をK回回転
- 0-を出す問題1 ナップザック問題
- リンクリストのループを検出する
- 冗長な中括弧
- 平衡括弧チェッカー
- 二つのソート配列の中央値
- 1行目:P – 元本(融資額)
- 2行目:T – 総保有期間(年単位).
- 3行目。 最初のスラブは1年目から始まり、2番目のスラブは最初のスラブの終わりから始まる、という具合です。
- 次のN1行には金利とその期間が入ります。
- N1行の後、N2行、すなわち第2の銀行が提供するスラブの数が入ります。
- 期間と金利は空白1つで区切られます。 あなたの決断 – 銀行Aまたは銀行Bのどちらか。
説明:
サンプル入力1:
100002035 9.510 9.65 8.5310 6.95 8.55 7.9
サンプル出力1:
Bank B
サンプル入力2:
50000026313 9.53 6.910 5.6314 8.56 7.46 9.6
サンプル出力2:
Bank A
解決。
#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;}
Sample Hackerrank Questions: One Egg
“One Egg “は卵を小売店に供給する会社である。 彼らは卵にM個のクラスを持っています。 各クラスはN個の卵を持つことができます(Nは同じでもクラスによって異なってもかまいません)。 この会社は郵便で X 個の卵の注文を受ける. それに対して、「ありがとうございます」と卵の数、または「申し訳ありません」と卵の数を書いて、供給できるかどうかを確認する。 また、供給するクラス別の卵の内訳を記載する。 注文された卵は、まず一番多い卵の数を調整し、次に残りを二番目に多い卵に調整するというように、それぞれのクラスに対して調整される。 同社は少し迷信的でもある。 注文した卵の数が在庫の総数以上であれば、卵を1個残し、在庫の総数から1個を引いた数とクラス別の卵の内訳を「すみません」と書いて返送しているそうです。
注意: クラスの卵数が同じ場合は、最初に入力したクラスを選択して調整する必要があります。
入力フォーマット:
最初の行には、M(卵のクラス数)とX(注文数)のそれぞれの値を示す、スペースで区切られた2つの整数が含まれる。 次のM行には、各クラスで利用できる卵の数を示す整数がそれぞれ含まれる
出力形式:。
最初の行は、もしXがEggsの総数より少ないなら、Print ” Thank you, your order for X eggs are accepted” Else if X is greater or equal to total number of Eggs then print ” ” Sorry, we can only supply (total number of Eggs in stock -1) eggs” T hen M lines with 3 columns: 1列目 – 各クラスの卵の数 2列目 – その注文に対して各クラスに割り当てられた卵 3列目 – 各クラスに対する卵のバランス
制約:
1 ≤ M ≤ 20 N ≥ 1 X ≥ 1
サンプル入力1.卵の数、2.卵の数、3.卵の数、4.卵の数、5.卵の数、6.卵の数、7.卵の数、8.卵の数、9.卵の数、10.卵の数、10.卵の数、11.卵の数
5 150 50 15 80 10 5
サンプル出力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
説明します。
Total order of 150 eggs is less than the total number of Eggs 50+15+80+10+5 = 160.これは、卵の総数です。 そのため、Thank youメッセージが表示されます。 150個はまず、卵の数が1番多い80個のクラスに対して調整されました。 150-80=70のバランスが、2番目に多い50のクラスに対して調整されました。 70-50=20のバランスが、15に対して調整されました。 20-15=5個を10個に調整し、そのクラスの卵を5個残しました。
サンプル入力2:
4 250 80 50 70 20
サンプル出力2:
Sorry, we can only supply 219 eggs 80 80 0 50 50 0 70 70 0 20 19 1
説明:
250個の卵の合計注文は、80+50+70+20 = 220個より大きかったです。 よって残念なメッセージになりました。 250個はまず、卵の数が1番多い80個のクラスに対して調整されました。 250-80=170のバランスが、2番目に多い70のクラスと調整されました。 170-70=100のバランスが50に対して調整されました。 100-50=50のバランスが、20に対して調整されました。 バランスは最後のクラスの卵より大きいので、その最後のクラスには1個を除いてすべての卵が残っています。
解答:
#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;}
問題3:
Sample Hackerrank Questions: Milk Man and His Bottles
ある牛乳屋が、さまざまなサイズの包装された瓶に入った牛乳を提供している。 瓶の大きさは{1, 5, 7, 10}リットルが考えられる。 彼はサイズに関係なく、できるだけ少ない瓶で希望する量を供給したいと考えている。
入力フォーマット:
- 最初の行にはテストケース数N
- 次のN行にはそれぞれ牛乳の需要に相当する正整数Liが書かれている。
出力フォーマット:
それぞれの入力Liに対して、需要を満たすために必要なボトルの最小数を出力する
制約事項:
制約事項を出力する。
1 <= N <= 1000 Li > 0 1 <= i <= N
サンプル入出力:
2 7
説明します。
テストケースの数は2
For 17 = 10*1 + 7*1 = 2
For 65 = 10*6 + 5*1 = 7
もう少し例を挙げてみます。
For 99 = 10*9 + 7*1 + 1*2 = 12
For 63 = 10*6 + 1*3 = 9
解決策です。
#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;}
Question 4:
Sample Hackerrank Questions: 花嫁探し
サムは独身貴族である。 彼は人生に落ち着き、家族を持つことを決心します。 彼は花嫁探しをします。
1) 女の子は金持ちでなければならない。
2) 女の子はエンジニア/医者でなければならない。
3) 女の子は美しいべきである。
5) 少女はMNCで働いていること。
6) 少女は外向的であること。
7) 少女は眼鏡を持っていないこと。
8) 少女は親切で正直であること。
以上の8項目の一部、またはすべてを備えた嫁を探しているのである。
その場合、彼は自分の家に一番近い女の子を選びたいと考えています。 サムのために、最大の資質を持つ花嫁を探す。 もし、Samの家から同じくらいの距離に複数の候補者がいる場合、
print “”一夫多妻制は認められません””.
条件に合う女の子がいない場合は””No suitable girl found””
Matrix N*Mが与えられたとき、Samの家は(1、1)にある。 したがって、(1, 1)の1は結婚適齢期の少女の位置とはみなされない。
サムの基準によるその少女の資質は、彼女が持つ0以外の隣人の数(最大8方向)から解読されなければならない。 上記の条件と同様に、位置(1, 1)の1は少女の品質として考慮されるべきではありません。
花嫁Samを見つけ、その行と列を表示し、その花嫁が持っている品質の数を調べる。
注意:距離は任意の方向、すなわちホップの数で計算される。 (左、右、上、下、斜め)
制約:
2 <= N,M <= 10^2
入力形式:
入力(C)
と
があります。
- 1行目には住宅の行(N)と列(M)が入っています。
- 次のN行には、女の子とその資質に関するデータが含まれます。
出力フォーマット:
それは、嫁の行と列、およびコロン(すなわち:)で区切られた嫁の持つ資質の数からなります。
サンプル入力1:
2 9
1 0 1 0 1 1 1
0 0 1 0 0 1
サンプル出力1.0:0 0 0 1 1 1
サンプル入力2:0 1 1 1 1 1 1 1
1 0 0 1 1 0 1
1 0 0 0 1 1
説明:
(1,3),(1,4),(1,6),(1,7),(1,8),(1,9),(2,4),(2,6),(2,9) に少女と資質が存在する。
(1,3)にいる少女は(1,4)と(2,4)の2つの資質を持つ.
(1,4)にいる少女は2つの資質を持つ.
(1,6)にいる新婦は2つの資質を持つ.
新婦は2つの資質を持つ.
新婦は2つの資質を持つ.
(1,7)にいる花嫁の資質は3です。
(1,8)にいる花嫁の資質は3です。
(1,9)にいる花嫁の資質は2です。
(2,4)にいる花嫁の資質は2です。
(2,6)にいる花嫁の資質は2です。
花嫁の資質は2です。
(2,9)にいる花嫁は2つの資質を持っています。
このように、最大の資質を持つ候補者は2人います。1人は(1,7)に、もう1人は(1,8)にいます。
サムの家に最も近い女の子は、(1,7)にいるのです。 したがって、彼女は花嫁です。
したがって、出力は1:7:3となります。
サンプル入力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 0
0 0 1 1 0
0 0 0 0 0
サンプル出力2です。
説明します。
花嫁と資質は、(3,3)、(3,4)、(3,5)、(4,3)、(4,4)、(4,5)、(5,3)、(5,4)、(5,5)で存在している
(3,3) で存在花嫁には3資質(すなわち、。(3,4),(4,3),(4,4))。
(3,4) にいる花嫁は5つの性質を持つ。
(4,3)の花嫁は5つの資質を持っています。
(4,4)の花嫁は8の資質を持っています。
(4,5)の花嫁は5の資質を持っています。
(5,3)にいる花嫁の資質は3つです。
(5,4)にいる花嫁の資質は5つです。
(5,5)にいる花嫁は資質3つです。
このように, (4,4) にいる女の子が最大数の資質があることが分かります。 したがって、彼女は花嫁です。
したがって、出力は4:4:8となります。
解決策:
#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;}
これらも確認できます。
- 必修データ構造&アルゴリズム問題
- 必修Cプログラミング問題
もしこの記事について何かフィードバックやこれを改善したい場合は [email protected]に書き込みをお願いします。
問題1.冗長な中括弧は、ループを検出することができます。
Sample Hackerrankの質問です。 Bank Compare
A銀行とB銀行の2つの銀行があり、その金利は様々です。 あなたは両銀行から年利、借入期間、借入期間中の利率の変化についてオファーを受けました。 計算を行い、賢明な選択をしてください。
ローンの返済は毎月行われ、EMI (Equated Monthly Installment) は以下に示す計算式で算出されます:
EMI = loanAmount * monthlyInterestRate / ( 1 – 1 / (1 + monthlyInterestRate)^(numberOfYears * 12))
制約があることです。
1 <=p <=1000000
1 <=t <=50
1<= N1 <= 30
1<= N2 <= 30
入力形式です。