N 個の要素からなる数列 A が与えられます。2 ≦ i ≦ N の各 i に対して、A_i と同じ値が A_1 から A_{i-1} の間にあるかどうかを判定してください。
考え方としては、まずAのリストをつくり、そこからBのリストに、まず1個入れ、そこからループするたびにBのリストにA1つずつ入れていき、
ループするたびにあるかどうか確かめ出力し、また1個入れ。。。というのを繰り返す
N = int(input())
A = [int(x) for x in input().split()]
B = []
for i in range(N):
if i == 0:
B.append(A[i])
else:
if A[i] in B:
print('Yes')
else:
print('No')
B.append(A[i])
上をもっと短くするなら
Bの配列を作る時にしれっとA[0]をいれてしまっておくと
if文が1つなくなり可読度が上がる
N = int(input())
A = [int(x) for x in input().split()]
B = [A[0]]
for i in range(1,N):
if A[i] in B:
print('Yes')
else:
print('No')
B.append(A[i])
答えだと集合を使っていた
・メリットとしてはデータから重複削除するので、データを検索する時間が短くなる(はず)
・集合に要素を追加する場合はappend()
の代わりにadd()
を使う
N = int(input())
A = [int(x) for x in input().split()]
memo = {A[0]}
for i in range(1, N):
if A[i] in memo:
print("Yes")
else:
memo.add(A[i])
print("No")