0
0

AtCoder初心者振り返りメモ ABC348

Last updated at Posted at 2024-04-06

ABC348の回

A-問題

[問題文]
髙橋君はサッカーの試合で N 回ペナルティキックを蹴ります。
髙橋君はi 回目のペナルティキックでは、i が 3 の倍数の場合は失敗しそれ以外の場合は成功します。髙橋君がペナルティキックを蹴ったときの結果を出力してください。

[考察や感想]
蹴る回数を % 3 で判定し、3の倍数のときは、失敗 x を出力
それ以外は、成功 o を出力する。問題通りにロジックを記述して正答できました。

A.py
N = int(input()) 

ans = ""

for i in range(1,N+1):
    if i % 3 == 0:
        ans += "x"
    else:
        ans += "o"

print(ans)

B-問題

348b.png

[考察や感想]
i番目の座標からその他の座標の距離を計算し、その中で最大値とそのインデックスを変数に記憶して選出しました。
小さい方から計算するので同じ最大値のときも答えは、条件通りで正答できました。

B.py
N = int(input()) 
X = [0]
Y = [0]

# それぞれの座標を別々の配列に格納する
for _ in range(N):
    x,y = map(int,input().split())
    X.append(x)
    Y.append(y)

for i in range(1,N+1):
    # 最大値とそのインデックスを格納する
    MX = 0
    IDX = 0
    for j in range(1,N+1):
        if i == j:
            continue    # 同じ座標は計算しない
        else:
            # 距離の最大な点(IDX)を選出
            P = (Y[j]-Y[i])**2 + (X[j]-X[i])**2
            if MX < P:
                MX = P
                IDX = j
    print(IDX)

C-問題

[問題文]
N 種類のビーンズが 1 粒ずつあります。i 種類目のビーンズはおいしさが Aiで色がCiです。ビーンズは混ぜられており、色でしか区別することができません。
あなたはビーンズの色を 1 つ選び、その色のビーンズをどれか 1 粒食べます。ビーンズの色をうまく選ぶことで、食べる可能性のあるビーンズのおいしさの最小値を最大化してください。

[考察や感想]
同じ色の値は、辞書で管理する。辞書にその色の値があれば、低い方の値に更新することで最小値を管理できる。
最後に、最大値を持つ色の値を答えに出力して正答できました。

C.py
# 入力
N = int(input()) 
dic = defaultdict(int)

# 辞書でその色の最小値を管理する
for _ in range(N):
    A,C = map(int,input().split())
    if C not in dic:
        dic[C] = A
    else:
        x = dic[C]
        if A < x:
            dic[C] = A

Mnum = 0
MV = 0

# 辞書の中から最大値を見つける
for num, value in dic.items():
    if MV < value:
        MV = value
        Mnum = num
    else:
        continue

print(MV)
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