본문으로 바로가기

C079:カードを集める

category TIL/Algorithm 2024. 4. 23. 21:49

あなたは友達に勧められて、とあるカードゲームを始めることにしました。
そのカードゲームには、カード番号 1 から M までの M 種類のカードがあります。
あなたは完璧主義者なので、どうしても M 種類全てのカードが欲しくなり、カードを N 枚買いました。

さあ、買ってきた N 枚のカードを順番に開けていきましょう!

開けたカードのカード番号が順番に与えられるので、M 種類そろったのは何枚開けたときかを出力するプログラムを書いて下さい。

以下は入力例 1 を図示したものです。

評価ポイント10回のテストケースで、正答率、実行速度、メモリ消費量をはかり得点が決まります。
より早い回答時間で提出したほうが得点が高くなります。
  1. 複数のテストケースで正しい出力がされるか評価(+50点)
  2. 解答までの速さ評価(+50点)
入力される値

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

N M
c_1
...
c_N
  • ・1 行目に買ったカードの枚数 N とカードの種類数を示す整数 M が入力されます。
  • ・続く N 行に開けたカードのカード番号 c_i (1 ≦ i ≦ N) が入力されます。
  • ・最終行の末尾に改行が 1 つ入ります。

それぞれの値は文字列で標準入力から渡されます。標準入力からの値取得方法はこちらをご確認ください
期待する出力何枚開けたときに全種類そろったかを出力してください。
ただし、全て開けても全種類そろわないときは、"unlucky" と出力してください。

期待する出力は 1 行からなります。
最後は改行し、余計な文字、空行を含んではいけません。
条件

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

  • ・1 ≦ N ≦ 1000
  • ・1 ≦ M ≦ 100
  • ・1 ≦ c_i ≦ M (1 ≦ i ≦ N)
入力例1
6 3
1
2
2
3
1
3
出力例1
4
入力例2
7 4
1
2
3
1
2
3
1
出力例2
unlucky
入力例3
1 100
1
出力例3
unlucky

 

# 6 3
# 1
# 2
# 2
# 3
# 1
# 3
a,b=map(int, input().split())
card_list=[int(input()) for i in range(a)]
print(a,b)
print(card_list)
flag=True
for i in card_list:
    if b==i:
        print(card_list.index(b)+1)
        flag=False
        break
if flag==True:
    print("unlucky")
a,b=map(int, input().split())
card_list=[int(input()) for i in range(a)]
# print(a,b)
# print(card_list)
card_count=[0]*(b+1)
card_type=0
card_open=0
flag=True
for i in card_list:
    if card_count[i]==0:
        card_type+=1
    card_count[i]+=1
    card_open+=1

    if b==card_type:
        print(card_open)
        flag=False
        break
if flag==True:
    print("unlucky")

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

C094:国民の税金  (0) 2024.04.25
C059:パリティチェック  (0) 2024.04.24
C116:あたり棒の検査  (0) 2024.04.22
C148:戦闘シミュレーション  (0) 2024.04.20
C034:先生の宿題  (0) 2024.04.09