AtCoder ABC 109 B – Shiritori Python解説

スポンサーリンク

Shiritori

高橋くんは今日も 1 人でしりとりの練習をしています。
しりとりとは以下のルールで遊ばれるゲームです。

その単語はまだ発言していない単語である
その単語の先頭の文字は直前に発言した単語の末尾の文字と一致する

高橋くんが発言した単語の個数 N と i 番目に発言した単語Wi が与えられるので、どの発言もしりとりのルールを守っていたかを判定してください。

AtCoder Beginner Contest 「Shiritori」

やる事としては単語が重複していないかの確認、それと、単語の末尾と次の単語の先頭の文字が一致するかの確認の2点です。初めは単語を受け取った段階で、その都度、重複と末尾と先頭の一致を確認しようと思っていたのですが、なかなか大変そうだったので単語をすべてリストに入れたあと確認することにしました。

n = int(input())

word_list = [input() for _ in range(n)]

flag = True

if len(word_list) != len(set(word_list)):
    flag = False
    
for i in range(1, n):
    if word_list[i-1][-1] != word_list[i][0]:
        flag = False
        
print("Yes" if flag else "No")

word_listに高橋くんが言った単語をすべて入れています。そのあとif文で文字の種類の確認。set関数を使うことで重複した単語の要素数を確認しています。

続くfor文ではword_listのひとつ前の単語の末尾と次の単語の先頭の文字が一致するかを確認しています。
最後にflagがTrueだったらYes、FalseだったらNoを出力して完了です。

AtCoderB問題

Posted by cheese