ABC323の回
参考リンク
A-問題
問題文
0 と 1 からなる長さ 16 の文字列 S が与えられます。
2 以上 16 以下のすべての偶数 i について S の i 文字目が 0 ならば Yes を、 そうでないならば No を出力してください。
A.py
# 入力を受け取る
S = str(input())
# 偶数なので2つおきに判定
for i in range(1,16,2):
if S[i] != '0':
print("No")
exit()
print("Yes")
B-問題
本番は、自己流の書き方で正答できたがスマートではなかった。
ポイント
・勝ち数とi番目をソートするときに工夫が必要
・リストにペアで入力 :P.append((-wincnt, i+1))
・空白区切りで出力 :print(i, end = " ") # 空白区切りで出力
B.py
# 入力
N = int(input())
# 結果格納先
P = []
# 文字列S を順に読み込んでいく
for i in range(N):
S = input()
# 文字列Sの中の勝ち数をカウント
wincnt = S.count('o')
# ソートのため、勝利数にマイナス1を掛ける工夫をして、[勝利数]と[i]番目を入力
P.append((-wincnt, i+1))
#小さい順にソートされるので、マイナス勝利数と前からの順番でソートされる!
P.sort()
# リストPから要素を呼び出し、i番目の人の数字で出力する
for wincnt, i in P:
print(i, end = " ") # 空白区切りで出力