본문 바로가기

알고리즘/백준

[BOJ] [Python] 1316 : 그룹 단어 체커

단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만 1을 출력하면 된다.

 

 

# ord('a') == 97

num = int(input())

result = 0

for _ in range(num):

    string = input()
    dp = [0] * 26

    tmp = string[0]

    for s in string:

        if dp[ord(s) - 97] == 0:
            dp[ord(s) - 97] = 1

        else:
            if tmp != s:
                result -= 1
                break

        tmp = s

    result += 1

print(result)

 

 

아스키코드를 활용했다.

 

주의할 점은 2번 이상 나온 문자에 대한 처리이다.

 

예를 들어보자.

 

예) abcc

마지막에 있는 c는 연속해서 나온 문자이기 때문에 통과이다.

 

예) acbc

마지막에 있는 c는 연속해서 나온 문자가 아니기 때문에 통과할 수 없다.

 

즉, 2번 이상 나온 문자는 연속성 확인을 해줘야 한다.