백준 문제풀이

1316번 - 그룹 단어 체커 / silver 5 / dict, string

RonLee 2023. 2. 5. 14:29

https://www.acmicpc.net/problem/1316

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때

www.acmicpc.net

'''
1316번 - 그룹 단어 체커 / silver 5 / dict, string
'''
import sys

input = sys.stdin.readline


def is_group_word(word):
    i = 0
    group = dict()
    while i < len(word):
        now = word[i]
        if group.get(now):
            return 0
        group[now] = 1
        i += 1
        if i == len(word):
            break
        while now == word[i]:
            i += 1
            if i == len(word):
                break
    return 1


cnt = 0
for _ in range(int(input())):
    word = input()
    if is_group_word(word):
        cnt += 1
print(cnt)

 

단어 하나를 입력 받으면, 해당 문제에서 말한 그룹단어가 맞는지 확인 후,

맞으면 cnt 1증가, 아니면 pass

 

그룹단어가 맞는지 확인하는 함수 만들기

def is_group_word(word):

(딕셔너리를 활용)

  • 단어의 첫번째 문자 ~ 끝 문자까지 체크하기
    • now = word[i]  / 현재 가리키고 있는 문자를 now에 넣고,
    • 딕셔너리 key 값에 now 가 있는지 확인
      • 있으면, 그룹 단어가 아니므로 return 0
      • 없으면, 딕셔너리 key 값에 추가
    • 현재 가리키고 있는 문자 now // 바로 뒤에 문자들이 now랑 같은 문자이면, i += 1