본문으로 바로가기

C116:あたり棒の検査

category TIL/Algorithm 2024. 4. 22. 23:00

あなたはアイスクリームの製造工場で棒アイスを製造しています。棒アイスは 1 日に N 本製造されます。
それぞれのアイスの棒には「あたり」か「はずれ」という文字が刻印されています。しかし、「はずれ」が連続しすぎると顧客が不満を抱きます。そこで、製造ラインでアイスの棒を先頭から見ていったときに、M 回連続で「はずれ」が刻印されている箇所がないか検査することになりました。

たとえば入力例 1 の場合、1 日に 5 本の棒アイスが製造されます。3 回連続で「はずれ」が刻印されている箇所はありません。

1 日に製造される棒アイスの本数 N、検査する区間の大きさ M、およびそれぞれのアイスの棒に刻印されている「あたり」「はずれ」の情報が与えられたときに、「はずれ」が M 回連続で刻印されている箇所がないかを判断するプログラムを作成してください。
評価ポイント10回のテストケースで、正答率、実行速度、メモリ消費量をはかり得点が決まります。
より早い解答時間で提出したほうが得点が高くなります。
  1. 複数のテストケースで正しい出力がされるか評価(+50点)
  2. 解答までの速さ評価(+50点)
入力される値

入力は以下のフォーマットで与えられます。

N M
a_1 a_2 ... a_N
  • ・1 行目に、棒アイスの個数を表す整数 N と、検査する区間の大きさを表す整数 M がスペース区切りで与えられます。
  • ・2 行目に、i 番目 (1 ≦ i ≦ N) のアイスの棒に刻印されている文字の情報を表す N 個の整数 a_i が半角スペース区切りで与えられます。a_i = 0 のとき、i 番目のアイスの棒に「はずれ」が刻印されていることを表します。a_i = 1 のとき、i 番目のアイスの棒に「あたり」が刻印されていることを表します。
  • ・入力は合計で 2 行となり、2 行目の末尾に改行が 1 つ入ります。

それぞれの値は文字列で標準入力から渡されます。標準入力からの値取得方法はこちらをご確認ください
期待する出力M 回連続で「はずれ」が刻印されている箇所がない場合 「OK」 と、そうでない場合 「NG」 と出力してください。
末尾に改行を入れ、余計な文字、空行を含んではいけません。

条件

すべてのテストケースにおいて、以下の条件をみたします。

  • ・1 ≦ N ≦ 100
  • ・1 ≦ M ≦ N
  • ・a_i = 0 または a_i = 1 (1 ≦ i ≦ N)
入力例1
5 3
1 0 1 1 1
出力例1
OK
入力例2
6 3
1 0 0 0 0 1
出力例2
NG

0

および

区間(くかん)

箇所(かしょ)부분 @각인된 부분이 있는지 @장소

不満を抱きます

刻印(こくいん)각인

文字

はずれ あたり

棒アイス

製造

# 5 3
# 1 0 1 1 1
a,b=map(int, input().split())
# print(a,b)
lo_list=list(map(int,input().split()))
# print(lo_list)
flag=True
for i in range(a-b+1):
    if sum(lo_list[i:i+b])==0:
        print("NG")
        flag=False
        break
if flag:
    print("OK")
# print(lo_list[1:1+b])

'TIL > Algorithm' 카테고리의 다른 글

C059:パリティチェック  (0) 2024.04.24
C079:カードを集める  (0) 2024.04.23
C148:戦闘シミュレーション  (0) 2024.04.20
C034:先生の宿題  (0) 2024.04.09
C135:商品の割引  (0) 2024.04.07