ebisukeプログラミング初心者脱出黙示録

30歳を過ぎてから始めたプログラミングと競プロの記録。Pythonで取り組んでいます。Arduinoで電子工作も

マイナビプログラミングコンテスト2021 A - Tiny Arithmetic Sequence / B - Do you know the second highest mountain?【Python解答例】

f:id:ebisuke33:20210516000221p:plain

マイナビプログラミングコンテスト2021(AtCoder Beginner Contest201)のA とB問題についてPythonの解答例を記事にしていきます。
Mynavi Programming Contest 2021(AtCoder Beginner Contest 201) - AtCoder


AtCoder Beginner Contest201 A - Tiny Arithmetic Sequence

A - Tiny Arithmetic Sequence

問題文

長さ 3 の数列 A=(A1,A2,A3) が与えられます。
A を適切に並び替えて等差数列にすることはできますか?
即ち、A3−A2=A2−A1 を満たすように A を並び替えることはできますか?

制約

・1≤Ai≤100
・入力は全て整数

解答例

A = list(map(int, input().split()))

if A[2] - A[1] == A[1] - A[0] or A[1] - A[0] == A[0] - A[2] or A[0] - A[2] == A[2] - A[1]:
    print("Yes")
else:
    print("No")

解説

問題文のように与えられた数列を並び替えて等差数列にできるか答える問題です。

等差数列になるか3通り並び替えて判断し、答えを出力すればOKでした。


AtCoder Beginner Contest201 B - Do you know the second highest mountain?

B - Do you know the second highest mountain?

問題文

AtCoder国には N 個の山があり、i 個目の山の名前は Si, 高さは Ti です。
2 番目に高い山の名前を答えてください。
N 個の山の名前、高さはそれぞれ相異なることが保証されます。

制約

・2≤N≤1000
・1≤(Si の長さ)≤15
・1≤Ti≤10^5
・Si≠Sj ( i ≠ j )
・Ti≠Tj ( i ≠ j )
・Si は英小文字、英大文字、数字のみからなる
・N, Ti は整数

解答例

n = int(input())

ST = []
for i in range(n):
    s, t = input().split()
    t = int(t)
    ST.append([s , t])

ST = sorted(ST, reverse = True, key = lambda x: x[1])

print(ST[1][0])

解説

N個の山のうち2番目に高い山を答える問題です。

山の高さを降順ソートして、2番目に高い山を見つけました。
2次元配列のソートはこちらの記事を参考にしてください。
ebisuke33.hatenablog.com

ソートが終わった配列の2番目の要素が求める山になりますので、その山の名前であるST[1][0]を出力すればACでした。



ABC201の関連記事はこちら
ebisuke33.hatenablog.com
ebisuke33.hatenablog.com