단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만 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번 이상 나온 문자는 연속성 확인을 해줘야 한다.
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ] [Python] 1005 : ACM Craft (0) | 2021.10.02 |
---|---|
[BOJ] [Python] 14567 : 선수과목 (Prerequisite) (0) | 2021.10.02 |
[BOJ] [Python] 1764 : 듣보잡 (0) | 2021.09.29 |
[BOJ] [Python] 20438 : 출석체크 (0) | 2021.09.26 |
[BOJ] [Python] 18222 : 투에-모스 문자열 (0) | 2021.09.20 |