알고리즘

[파이썬] 단계별 백준 문제 풀기 - 1316 문자열 (그룹 단어 체커)

햄❤️ 2021. 3. 12. 15:55
반응형

문제링크

 

 


<<소스코드>>

n = int(input()) #처음 주어지는 단어의 갯수

group = 0
for i in range(n):
    count = 0
    numb = input()
    for j in range(len(numb)-1): #여기를 -1을 해줘서 out of range 가 계속 났음. j+1 때문에 -1을 더 빼줘야한다. 
        if numb[j] != numb[j+1]: #옆의 문자가 연속된 동일한 문자가 아니라면?
            if numb[j] in numb[j+1:]: #j+1부터 끝까지 중, numb[j]값이 있다면,
                count += 1 #그렇다면 그룹문자가 아니니까 카운트 해주기

    if count == 0: # 카운트가 없어야 = 0이여야 그룹문자 이므로,
        group += 1 # for문이 끝날때마다 그룹을 +1 해준다. 그룹의 갯수가 그룹문자의 갯수이다.

print(group)

<<결과값>>

4
aba
abab
abcabc
a

1

코드설명

 그룹문자가 아니려면,

    1) 연속되어도 뒤에 또 나와야함 -> 연속된 것의 맨 마지막 차례가 올때 2)를 수행한다. ex) aaabbca (2번인덱스 a)

    2) 연달아 나오지는 않지만, 뒤에 또 나옴

 

for문을 돌면서 그룹문자가 아닌것들을 카운트 해줬다. 카운트가 없는 것들이 그룹문자가 된다.

연속된 문자가 없을때, 뒤에 문자 안에 내가 찾는 문자가 있는지 봐주고, 카운트를 올려주었다. 

 

오류발생

len(len(numb)-1): #여기를 -1을 해줘서 out of range 가 계속 났음. 인덱스가 범위를 넘었다ㅠㅠ

i+1도 범위에 있어야하는데 그걸 생각 못해주었다... (๑°ㅁ°๑)‼✧

728x90
반응형