[python]白駿1316号:組合せ語チェック
https://www.acmicpc.net/problem/1316
コンビネーションワードとは、単語に存在するすべての文字に対して、各文字が連続して現れる場合にのみ使用されます.例えば、ccazzzbbは、c、a、z、bが連続して現れるため、kinもk、i、nが連続して現れるが、aabbbbcbはbが落ちたため、組合せ語ではない.
プログラムを作成し、N個の単語を入力し、グループ内の単語数を出力してください.
1行目の単語の個数はNです.Nは100以下の自然数である.2行目から、単語はN行に入ります.単語はアルファベット小文字だけで、繰り返しず、最長100です.
最初の行はグループ語の個数を出力します.
文字が不連続な場所で再び現れると、その文字列は組合せ語ではなく である.これらのみを考慮して、コード を記述する
与えられたの例では、返された結果はすべて正しいが、答えが間違っているのは である.
もし文字列がだったら?上記のコードに を実行する.ですので、この間も同じ文字ではない条件 が追加されました.でも と間違えました現在の問題は 連続文字が異なる場合、現在の文字の後に文字列 を再定義する.新しい文字列に現在の文字がある場合、その文字列はグループ文字ではなく である.
ああ...
私は30分以上かけてこの問題を解いた.練習を続ければできるでしょう.がんばって…!
質問する
コンビネーションワードとは、単語に存在するすべての文字に対して、各文字が連続して現れる場合にのみ使用されます.例えば、ccazzzbbは、c、a、z、bが連続して現れるため、kinもk、i、nが連続して現れるが、aabbbbcbはbが落ちたため、組合せ語ではない.
プログラムを作成し、N個の単語を入力し、グループ内の単語数を出力してください.
入力
1行目の単語の個数はNです.Nは100以下の自然数である.2行目から、単語はN行に入ります.単語はアルファベット小文字だけで、繰り返しず、最長100です.
しゅつりょく
最初の行はグループ語の個数を出力します.
に答える
アイデア
count = 0
for i in range(int(input())):
word = input()
for j in word:
if j in word[word.index(j)+2:]:
count -= 1
break
count += 1
print(count)
文字が非連続文字列にある場合は、break
です.count -= 1
をする理由はbreak
を運転してもドアが一番外側なので無条件にcount += 1
を運転します.だから1...とても非効率な感じがします...与えられた
もし文字列が
aaab
が連続する出現してもa
と比較するのでif文count = 0
for i in range(int(input())):
word = input()
for j in word:
if j in word[word.index(j)+2:]:
# 추가!!!
if word[word.index(j)+1] != j:
count -= 1
break
count += 1
print(count)
ab
ですコード#コード#
n = int(input())
count = 0
for i in range(n):
word = input()
for j in range(len(word)-1):
if word[j] != word[j+1]:
new = word[j+1:]
if word[j] in new:
count -= 1
break
count += 1
print(count)
ああ...
私は30分以上かけてこの問題を解いた.練習を続ければできるでしょう.がんばって…!
Reference
この問題について([python]白駿1316号:組合せ語チェック), 我々は、より多くの情報をここで見つけました https://velog.io/@jiyeah3108/Python-백준-1316번-그룹-단어-체커テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol