ABC252 B-問題
ポイント
リスト内の最大値を求めるには、max()を使う。
並び順にリストのインデックスを活用する。
252B.py
N,K = map(int,input().split())
A = list(map(int, input().split()))
B = list(map(int, input().split()))
# 美味しさの最大値
MA = max(A)
# 美味しさの最大値の位置を記録する
M_idx = []
for i in range(N):
if A[i] == MA:
M_idx.append(i + 1)
# 一致した場合は、嫌いな食品を食べる可能性がある
for i in range(K):
if B[i] in M_idx:
print("Yes")
exit()
print("No")
別の方の回答を参考にする
252B2.py
<入力>
N,K = map(int,input().split())
# 並び順として揃えるために先頭に[0]を格納
A = [0] + list(map(int, input().split()))
B = list(map(int, input().split()))
# おいしさの最大値
MA = max(A)
for i in range(K):
# リストBから何番目の食品を食べるか
b = B[i]
# 一致した場合は、嫌いな食品を食べる可能性がある
if A[b] == MA:
print("Yes")
exit()
print("No")
ABC310 C-問題
ポイント
・文字列と反転した文字列の両方を in で存在を確認する。
・何種類かという問題は、set で重複を削除する。
310C.py
N = int(input())
# set を利用して重複を削除する
ST = set()
for _ in range(N):
S = str(input())
# 文字を反転する
T = S[::-1]
# S or T がSTに含まれたらスルー
if S in ST or T in ST:
continue
else:
# 含まれない場合は、ST に格納する
ST.add(S)
print(len(ST))