Published on 12 Mar 2020

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.冗長な中括弧は、ループを検出することができます。

    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

    入力形式です。

    • 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]

      に書き込みをお願いします。

コメントを残す

メールアドレスが公開されることはありません。