2
1

More than 3 years have passed since last update.

paiza スキルチェック過去問題集 「Cランク相当 検索履歴」について

Posted at

(問題)
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])

これで完成です。

2
1
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
2
1