【ABC170 C】「Forbidden List」を解く【Python3】

「AtCoder」解説一覧へ

整数列 p1,…,pN に含まれない整数のうち、Xとの差の絶対値が最小のものを求める問題です。

複数存在する場合は、そのうち小さいものを答えます。

提出
x, n = map(int, input().split())
p = list(map(int, input().split()))

for i in range(100):
    num = x-i
    if num not in p:
        print(num)
        exit()
    num = x+i
    if num not in p:
        print(num)
        exit()

整数列piをリストとして受け取ります。

xとの差の絶対値が最小のもの、ということで、「x-i」「x+i」が、リストpの中にあるかどうかを判定します。

pの中になければ、これらが答えになります。

「複数ある場合は、そのうち小さいもの」という制約があるため、「x-i」を先に判定しています。

処理はほとんど変わりませんが、以下のように短く書くこともできます。

提出
x, n = map(int, input().split())
p = list(map(int, input().split()))

for i in range(x+1):
    for j in [-1, +1]:
        num = x+i*j
        if num not in p:
            print(num)
            exit()

【ABC170】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です