LoginSignup
0
0

AtCoder初心者振り返りメモ ABC323

Last updated at Posted at 2023-10-15

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 = " ") # 空白区切りで出力
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0