STUDY_SEONMIN

1316. 그룹 단어 체커 본문

STUDY/Baekjoon Algorithm

1316. 그룹 단어 체커

Kululu_ 2021. 7. 6. 14:36

그룹 단어란 단어에 존재하는 모든 문자에 대해서 각 문자가 연속해서 나타는 경우를 말합니다.

예를 들면 ccazzzzbb는 c, a, z, b 각 문자가 모두 연속해서만 나타나므로 그룹 단어입니다.

하지만 aabbbccb는 b가 떨어져서 나타나므로 그룹 단어가 아닙니다.

 

첫째 줄에 단어의 개수를 입력받고, 입력 받은 단어들 중에서 그룹 단어가 몇 개인지를 출력하는 프로그램을 작성하세요.

 

N = int(input())

ans = []
for _ in range(N):
    S = input()
    is_group = True
    
    for s in S:
        if S.count(s) > 1:
            idx1, idx2 = S.index(s), len(S) - S[::-1].index(s)
            if S[idx1:idx2] != s*(idx2-idx1):
                is_group = False
                break
    ans.append(is_group)
    
print(sum(ans))

 

  • 단어를 구성하는 모든 문자들이 1번씩만 등장한다면 그룹 문자이므로 등장횟수가 1보다 큰 문자가 존재하는 경우에만 문자가 떨어져서 나타나는지를 확인해주면 됩니다.

  • 문자가 떨어져서 나타나는가는 다음과 같은 방법으로 확인할 수 있습니다.
    1. 'aabbbccb'가 있을 때 처음 등장하는 'b'와 마지막으로 등장하는 'b'의 위치를 알아냅니다.
    2. 알아낸 위치를 통해 문자열을 슬라이싱합니다. 'bbbccb'
    3. 슬라이싱된 문자열이 하나의 문자로만 구성되었는지 비교합니다. 'bbbccb' , 'bbbbbb'
    4. 하나의 문자로만 구성되지 않았다면 중간에 다른 문자가 껴있으므로 문자끼리 떨어져서 나타난다는 의미로 그룹 단어가 아니게 됩니다.

'STUDY > Baekjoon Algorithm' 카테고리의 다른 글

2292. 벌집  (0) 2021.07.07
1712. 손익분기점  (0) 2021.07.07
2941. 크로아티아 알파벳  (0) 2021.07.06
5622. 다이얼  (0) 2021.07.06
2908. 상수  (0) 2021.07.06
Comments