문제 해결을 위한 과정
이 문제의 경우 문제를 잘 보면 알 수 있는 점이 있습니다. abcd와 같이 뒤에 나오는 문자들이 전부 다 처음 나오는 문자이면 이는 그룹 단어로 인정하지만 abca같이 이미 나왔던 a가 뒤에 한번 더 나오는 경우는 그룹 단어로 인정하지 않는다는 것입니다. 따라서 먼저 알파벳의 개수인 26만큼의 0으로 초기화된 일차원 배열을 생성합니다. 그 후 단어들을 한 글자씩 조회를 합니다. 이 한 글자씩 조회된 문자를 아스키코드로 바꿔주어서 해당하는 배열의 인덱스 값이 0이면 1로 바꾸어 주고 이미 1로 되어있다면 즉 이미 앞에서 나왔던 단어인 경우 바로 break를 해줍니다.
또한 abbbbbc와 같이 b가 여러개 있는 경우도 그룹 단어 이므로 위에서 말한 조건은 앞의 글자와 뒤의 글자가 다를 때만 적용해주는 걸로 쉽게 해결할 수 있습니다.
소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
n = int(input())
data = []
for i in range(n):
data.append(input())
count = 0
for word in data:
word += "!"
alpha = [0] * 26
check = True
for i in range(len(word)-1):
if word[i] != word[i+1]:
if alpha[ord(word[i]) - 97] == 0:
alpha[ord(word[i]) - 97] = 1
else:
check = False
break
if check:
count += 1
print(count)
|
cs |
'알고리즘 > 백준' 카테고리의 다른 글
백준 알고리즘 7568: 덩치(Python) (0) | 2021.02.03 |
---|---|
백준 알고리즘 1966: 프린터 큐(Python) (0) | 2021.02.02 |
백준 알고리즘 1152: 단어의 개수(Python) (0) | 2021.02.02 |
백준 알고리즘 2739: 구구단(Python) (0) | 2021.02.02 |
백준 알고리즘 2742: 기찍 N(Python) (0) | 2021.02.02 |