【AtCoder】ABC287解説(Python)

ユニークビジョンプログラミングコンテスト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が多ければYesAgainstが多ければ No と出力せよ。

解法1

ForAgainstの数をそれぞれカウントする。

解説

まず入力 \(N\) をint型で受け取り、ForAgainstの初期値を0とします。

N=int(input())
For=0
Against=0

for文で入力を \(N\) 回受け取り、入力がForであるか、Againstであるかを判定し、ForAgainstに回数を加算します。

for i in range(N):
  if input()=='For':
    For+=1
  else:
    Against+=1

Forが多ければYesAgainstが多ければ 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の数だけカウントする。

解説

ForAgainstの数をそれぞれカウントせずに、片方の数が半分より多いかどうかを判定すれば十分です。

まず入力 \(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')
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次