標題の回答で以下のコードではテストケースが2件通らないので反例を教えて頂きたいです。
問題自体は別解で解けているのですが、後述のコードで通らない理由が知りたい点です。
問
AtCoderでは、コンテストに参加すると「色」が付き、これはレートによって次のように変化します:
レート
1-399:灰色
レート
400-799:茶色
レート
800-1199:緑色
レート
1200-1599:水色
レート
1600-1999:青色
レート
2000-2399:黄色
レート
2400-2799:橙色
レート
2800-3199:赤色
また、レートが 3200以上になると色を自由に変えることができます。現在N人の人がAtCoderのコンテストに参加したことがあり、i人目の人のレートは aiです。そのとき、色の種類数の最小値と最大値を求めなさい。
制約
1≤N≤100
1≤ai≤4800
aiは整数である。
入力
入力は以下の形式で標準入力から与えられる。
N
a1
a2
.
.
.
aN
出力
色の種類数の最小値、最大値をこの順で空白区切りで出力しなさい。
以下コード
N = int(input())
a = list(map(int,input().split()))
d = {399:0,799:0,1199:0,1599:0,1999:0,2399:0,2799:0,3199:0}
k = 0
for i in range(N):
if a[i]<=3199:
for j in d.keys():
if a[i]<=j:
d[j]+=1
break
else:
k+=1
MX = 0
MN = 0
c3199 = 0
c0 = 0
for i in d.values():
if i != 0 :
c3199 += 1
else:
c0 += 1
if c3199==0:
MN = 1
if k<=8:
MX = k
else:
MX = 8
else:
MN = c3199
if c3199+k<=8:
MX = c3199+k
else:
MX = 8
print(MN,MX)
以上よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。