【AtCoder】ABC359解説(Python)

ユニークビジョンプログラミングコンテスト2024 夏(AtCoder Beginner Contest 359)の解説記事です。

目次

ABC359 A – Count Takahashi

問題

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

問題の要約

TakahashiAokiのどちらかと等しい文字列が \(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 を足し合わせることで、条件を満たす組み合わせの数をカウントしています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次