AtCoder Beginner Contest 152 過去問 (A~C)

参照

atcoder.jp

A問題

難なく突破

n,m = map(int, input().split())
print('Yes') if n==m else print('No')

B問題

こちらも難なく突破

a,b = input().split()
print(sorted([a*int(b),b*int(a)])[0])

C問題

配列Pが並べられており、i番目の数字より前の数字はPiより全て小さいか。
最初二重ループで書いていると、もちろんTLE。

n = int(input())
p_ls = list(map(int, input().split()))
sum_=0
for i in range(0,n):
  j=0
  if i==0: max_,min_=p_ls[i],p_ls[i]
  while j<=i:
    if min_>p_ls[i]: 
      min_=p_ls[i]
      break
    elif max_<p_ls[i]:
      max_=p_ls[i]
      sum_-=1
      break
    elif p_ls[j]<p_ls[i]:
      sum_-=1
      break
    j+=1
  sum_+=1
print(sum_)

配列の最初からiまで調べていくのですが、
最初からiまでの要素でPiが最小値となるときに条件が成立します。
最小値を更新しながら、条件が成立する要素数を数えていきます。

n = int(input())
p_ls = list(map(int, input().split()))
sum_=1
min_=p_ls[0]
for i in range(1,n):
  if min_>=p_ls[i]:
    min_=p_ls[i]
    sum_+=1
print(sum_)

よくよく考えると上記の通りですが、
自分の頭の悪さに泣きそうになる。

D問題

D問題以降は茶色コーダーになってから随時更新していきます。