【AtCoder】ABC328解説(Python)

トヨタ自動車プログラミングコンテスト2023#7(AtCoder Beginner Contest 328)の解説記事です。

目次

ABC328 A – Not Too Hard

問題

問題文の要約は以下の通りです。

問題の要約

\(N\) 問の問題が出題されるプログラミングコンテストがあり、\(i\) 問目の配点が \(S_i\) であるとき、配点が \(X\) 以下である問題すべての配点の合計を出力せよ。

制約

・入力される値は全て整数
・\(4 \le N \le 8\)
・\(100 \le S_i \le 675\)
・\(100 \le X \le 675\)

入力

\(N\) \(X\)
\(S_1\) \(S_2\) \(\cdots\) \(S_N\)

出力

答えを出力せよ。

解説

配点が \(X\) 以下である問題の配点を足し合わせる。

解説

\(N\), \(X\) をint型、\(S\) をlistとして受け取ります。

# 入力
N,X=map(int,input().split())
S=list(map(int,input().split()))

答えを初期値0で用意します。

# 答え(初期値0)
ans=0

配点が \(X\) 以下であれば答えに配点をプラスします。

# 配点が X 以下であれば答えに配点をプラスする。
for s in S:
  if s<=X:
    ans+=s

最後に答えを出力します。

# 答えを出力
print(ans)

解答

# 入力
N,X=map(int,input().split())
S=list(map(int,input().split()))

# 答え(初期値0)
ans=0

# 配点が X 以下であれば答えに配点をプラスする。
for s in S:
  if s<=X:
    ans+=s

# 答えを出力
print(ans)

ABC328 B – 11/11

問題

問題文の要約は以下の通りです。

問題の要約

1年が \(N\) か月、 \(i\) 月(\(1 \le i \le N\))は \(D_i\) 日からなるとき、1年のうち日付がゾロ目になる日が何日あるか求めよ。

制約

・\(1 \le N \le 100\)
・\(1 \le D_i \le 100\) (\(1 \le i \le N\))
・入力はすべて整数

入力

\(N\)
\(D_1\) \(D_2\) \(\cdots\) \(D_N\)

出力

答えを出力せよ。

解説

実際に日付を作りゾロ目になっているか判定する。

解説

まず、入力 \(N\) をint型、\(D_1\) \(D_2\) \(\cdots\) \(D_N\)をlistで受け取ります。

# 入力
N=int(input())
D=list(map(int,input().split()))

答えのゾロ目になる日数ansを変数として用意します。

# 答え(ゾロ目になる日数)
ans=0

1月から \(N\) 月までループ、そのループの中で1日から \(D\) 日までループします。

月と日の文字列を結合し、文字列が1種類の文字からなるかどうかで判定します。
ゾロ目であれば答えを+1します。最後に答えを出力します。

# 1月からN月までループ
for m in range(1,N+1):
  # 1日からD日までループ(mは1からループしているので[m-1]とする)
  for d in range(1,D[m-1]+1):
      # 月と日の文字列が1種類の文字からなる⇒ゾロ目
      if len(set(str(m)+str(d)))==1:
        ans+=1

# 出力
print(ans)

解答

# 入力
N=int(input())
D=list(map(int,input().split()))

# 答え(ゾロ目になる日数)
ans=0

# 1月からN月までループ
for m in range(1,N+1):
  # 1日からD日までループ(mは1からループしているので[m-1]とする)
  for d in range(1,D[m-1]+1):
      # 月と日の文字列が1種類の文字からなる⇒ゾロ目
      if len(set(str(m)+str(d)))==1:
        ans+=1

# 出力
print(ans)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次