0
0

重複の判定 1 (paizaランク C 相当)

Posted at

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")
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