Baekjun-組合せ語Checker(1316)



String


質問する


コンビネーションワードとは、単語に存在するすべての文字に対して、各文字が連続して現れる場合にのみ使用されます.例えば、ccazzzbbは、c、a、z、bが連続して現れるため、kinもk、i、nが連続して現れるが、aabbbbcbはbが落ちたため、組合せ語ではない.
プログラムを作成し、N個の単語を入力し、グループ内の単語数を出力してください.

入力


1行目の単語の個数はNです.Nは100以下の自然数である.2行目から、単語はN行に入ります.単語はアルファベット小文字だけで、繰り返しず、最長100です.

しゅつりょく


最初の行はグループ語の個数を出力します.
import sys

N = int(sys.stdin.readline())
answer = []

for i in range(N):
    word = input()
    check = [] 
    check.append(word[0]) # 디폴트로 첫 글자 넣고 시작
    
    for j in range(1, len(word)):
    	# 처음 출현했거나 두 번 이상 출현했는데 전 글자와 연속일 경우 문제의 조건 만족
        if check.count(word[j]) == 0 or (check.count(word[j]) >= 1 and check[-1] == word[j]): 
            check.append(word[j])
        else: 
            break # 조건에 어긋나면 더 진행하지 않고 바로 반복문 탈출
            
    if len(check) == len(word): #위 조건문을 빠져나온 글자수가 원래 글자수랑 같으면 해당 단어 정답배열로 옮긴다. 
        answer.append(word)
        # 물론 answer을 숫자형으로 해서 answer += 1로 가능.
        
print(len(answer))

# set으로 풀려다 이 문제는 배열이 적합해서 방향 전환
参照)
ソートの解:https://leedakyeong.tistory.com/entry/白駿-1316-グループ-単語-チック-in-python