(問題)
https://paiza.jp/works/mondai/skillcheck_archive/search_history?language_uid=python3
(Javaで解いた動画)
https://paiza.jp/works/skillcheck/primer/skillcheck4
この問題の回答がなかったので、自分の復習もかねて回答コードを掲載します。
問題文は以下の通りです。
あなたが利用しているブラウザでは検索ワードの履歴を見ることができません。あなたは検索ワードの履歴を見られないのは不便だと思ったので、検索ワードの履歴を見る機能を自分でつくることにしました。
検索ワードの履歴とは次のようにつくられます。
検索ワード W が以前に入力されたことがある場合:
履歴中の W を削除する。
履歴の先頭に W を追加する。
検索ワード W が以前に入力されたことがない場合:
履歴の先頭に W を追加する。
検索ワード W が N 個与えられるので、N 個の検索ワードが与えられた後の履歴を表示するプログラムを書いてください。
問題文だけでは少しわかりにくいという方は、リンク先を見ていただくと、具体例が載っているので理解できると思います。
#回答の指針
標準入力1行目に、検索ワード数をあらわす整数Nが与えられます。続く2行目以降で、1行に1単語ずつ検索したワードが与えられます。
予め空のリストを作成しておき、1行ずつワードを見て、リスト内にそのワードがない場合はリストに格納し、リスト内にそのワードがあった場合はリスト内の該当ワードを削除したうえでリストに付け加えると、与えられた条件にマッチしそうです。
#整数Nの取得
n = int(input())
#空のリスト
words=[]
#1行ずつワードを取得する
for i in range(n):
W = str(input())
#リスト格納前にif文で取得したワードがリストに含まれているかを確認する
if W in words :
words.remove(W) #リストにある場合はリスト内のワードを削除する
words.append(W) #リスト内の有無にかかわらず追加するのでappend()メソッドはこの位置
結果を表示する際に、一行ずつ、リストに新しく追加された順番という条件があるので、それにあった答えを出力します。
#結果を表示する
for i in range(int(len(words))):
print(words[-i-1])
これで完成です。