ユニークビジョンプログラミングコンテスト2023 新春 (AtCoder Beginner Contest 287)の解説記事です。
目次
ABC287 A – Majority
問題
問題文の要約は以下の通りです。
問題の要約
奇数である \(N\) 個の文字列、For
またはAgainst
を与えたとき、どちらが多いか判定せよ。
制約
・\(N\) は 1 以上 99 以下の奇数
・すべての \(i = 1, 2, \cdots, N\) に対して \(S_{i}\) はFor
またはAgainst
入力
\(N\)
\(S_{1}\)
\(S_{2}\)
\(\vdots\)
\(S_{N}\)
出力
For
が多ければYes
、Against
が多ければ No
と出力せよ。
解法1
For
とAgainst
の数をそれぞれカウントする。
解説
まず入力 \(N\) をint
型で受け取り、For
とAgainst
の初期値を0
とします。
N=int(input())
For=0
Against=0
for文で入力を \(N\) 回受け取り、入力がFor
であるか、Against
であるかを判定し、For
とAgainst
に回数を加算します。
for i in range(N):
if input()=='For':
For+=1
else:
Against+=1
For
が多ければYes
、Against
が多ければ No
と出力します。
if For>Against:
print('Yes')
else:
print('No')
解答
N=int(input())
For=0
Against=0
for i in range(N):
if input()=='For':
For+=1
else:
Against+=1
if For>Against:
print('Yes')
else:
print('No')
解法2
For
の数だけカウントする。
解説
For
とAgainst
の数をそれぞれカウントせずに、片方の数が半分より多いかどうかを判定すれば十分です。
まず入力 \(N\) をint
型で受け取り、For
の初期値を0
とします。
N=int(input())
For=0
for文で入力を \(N\) 回受け取り、入力がFor
であれば、For
に回数を加算します。
for i in range(N):
if input()=='For':
For+=1
For
が \(N\) の半分より多ければYes
、そうでなければ No
と出力します。
if For>N/2:
print('Yes')
else:
print('No')
解答
N=int(input())
For=0
for i in range(N):
if input()=='For':
For+=1
if For>N/2:
print('Yes')
else:
print('No')