ユニークビジョンプログラミングコンテスト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=0for文で入力を \(N\) 回受け取り、入力がForであるか、Againstであるかを判定し、ForとAgainstに回数を加算します。
for i in range(N):
if input()=='For':
For+=1
else:
Against+=1Forが多ければ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=0for文で入力を \(N\) 回受け取り、入力がForであれば、Forに回数を加算します。
for i in range(N):
if input()=='For':
For+=1Forが \(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')
