ユニークビジョンプログラミングコンテスト2024 夏(AtCoder Beginner Contest 359)の解説記事です。
目次
ABC359 A – Count Takahashi
問題
問題文の要約は以下の通りです。
問題の要約
Takahashi
かAoki
のどちらかと等しい文字列が \(N\) 個与えられるので、Takahashi
がいくつあるか求めよ。
解説
pythonでは特定の文字が含まれる個数をcount
を使用して求めることができます。
解説
まず入力を受け取ります。
# 入力
N=int(input())
S=[input() for _ in range(N)]
受け取ったS
の中にTakahashi
がいくつあるかカウントします。
# Takahashi がいくつあるかカウントする
print(S.count('Takahashi'))
解答
# 入力
N=int(input())
S=[input() for _ in range(N)]
# Takahashi がいくつあるかカウントする
print(S.count('Takahashi'))
ABC359 B – Couples
問題
問題文の要約は以下の通りです。
問題の要約
\(2N\) 人が横一列に並んでいる。服の色は \(1\) から \(N\) の \(N\) 色で、それぞれの色についてちょうど2人の人がその色の服を着ています。同じ色の服を着た二人の人の間にはちょうど一人いるのは何通りか求めよ。
解説
i
番目と i+2
番目の人が同じ色の服を着ているかどうかをチェックし、条件を満たす場合の数をカウントする。
解説
まず入力を受け取ります。
# 入力
N = int(input())
A = list(map(int, input().split()))
条件を満たす組み合わせの数をans
とします。
# 条件を満たす組み合わせの数
ans = 0
色の判定を行うためにループをします。現在の位置の色と2つ後の位置の色が同じであれば条件を満たすのでans
に+1
を行います。
# 色の判定を行う
for i in range(2 * N - 2):
# 現在の位置の色と2つ後の位置の色が同じであれば条件を満たす
if A[i] == A[i + 2]:
ans += 1
最後に結果を出力します。
# 結果を出力
print(ans)
解答
# 入力
N = int(input())
A = list(map(int, input().split()))
# 条件を満たす組み合わせの数
ans = 0
# 色の判定を行う
for i in range(2 * N - 2):
# 現在の位置の色と2つ後の位置の色が同じであれば条件を満たす
if A[i] == A[i + 2]:
ans += 1
# 結果を出力
print(ans)
このコードを短く書くと次のようなコードになります。
N = int(input())
A = list(map(int, input().split()))
print(sum(1 for i in range(2 * N - 2) if A[i] == A[i + 2]))
このコードはリスト内包表記を用いて、i
番目と i+2
番目の色が同じ場合に 1 を足し合わせることで、条件を満たす組み合わせの数をカウントしています。