문제링크: 백준 1316번(그룹 단어 체커)
이 문제는 문자열을 입력받아서 같은 문자가 있다면 연속해서 나오는 경우 그룹 단어라 하고
aba와 같이 따로 떨어져서 나오는 경우 그룹 단어가 아니라고 하는데, 그룹 단어의 개수를 세는 문제다.
import sys
input = sys.stdin.readline
n = int(input())
count = 0
for _ in range(n):
word = input()
for i in range(1, len(word)):
if word.index(word[i-1]) > word.index(word[i]):
break
else:
count+=1
print(count)
이 문제는 파이썬의 index의 특성을 사용해서 풀어줬다.
예를 들어, 문자열 'aba' 가 있을 때 문자열에서 'a'의 인덱스는 0과 2지만 'aba'.index('a')는 0이 나온다.
이는 index가 가장 앞에 있는 'a'의 인덱스를 출력하기 때문이다.
'aba'의 경우
(i가 1일 때)
word.index(word[i-1])은 0이고, word.index(word[i])은 1이므로 if문을 만족하지 않음
(i가 2일 때)
word.index(word[i-1])은 1이고, word.index(word[i])은 0이므로 if문을 만족함
따라서 'aba'는 그룹 단어가 아님
이러한 점을 이용해서 문자를 입력받고, 각 문자의 인덱스를 바로 앞 문자의 인덱스와 비교해서 for문을 수행하는 동안 if문을 만족하지 않을 경우 그룹 단어로 생각했다.