【競プロ典型90問】「027 - Sign Up Requests (★2)」解法
Free-PhotosによるPixabayからの画像

このシリーズではE869120さんによって作成された競プロ典型90問をPythonで解いています。

問題

027 - Sign Up Requests (★2)

ポイント

今までに登録された名前を記憶しておき、登録申請の度に照会します。

Python は set を用いると便利です。重複を削除してくれるし、in list より in set の方が計算コストが低いので。

コード

def main():
    import sys
    sys.setrecursionlimit(10 ** 9)
    input = sys.stdin.readline

    N = int(input())
    names = set()
    ans = []

    for i in range(N):
        s = input()[:-1]
        if s in names:  # 既に名前が登録済みの場合は登録しない
            continue
        else:  # 新規の名前の場合
            names.add(s)  # 申請された名前を登録
            ans.append(i+1)  # 申請日を答えの配列に格納

    print(*ans, sep='\n')


if __name__ == '__main__':
    main()

おすすめの記事