백준 1316번

Python code
N = int(input())
cnt = N
for _ in range(N):
word = input()
for j in range(len(word)-1):
if word[j] == word[j+1]:
pass
elif word[j] in word[j+1:]:
cnt -= 1
break
print(cnt)
코드설명
- 전체에서 그룹단어가 아닌것을 빼기 위해 cnt = N로 설정
- 선택한 알파벳과 다음 알파벳을 비교해야하기 때문에 for문에 범위를 range(len(word)-1)로 하나 줄여서 인덱스가 초과 되지 않게함
- 바로 앞 알파벳이랑 현재 알파벳이랑 같으면 pass
- 다르면 현재 알파벳이 word[j+1: ]범위 안에 있는지 확인
- 있으면 그룹단어가 아니기 때문에 cnt -= 1
C code
#include <stdio.h>
#include <string.h>
int word_count(char *word){
int alphabet[26] = {0};
int len_word = strlen(word);
for(int i = 0; i < len_word; i++){
char current_word = word[i];
if(i > 0 && current_word != word[i - 1]){
if(alphabet[current_word - 'a'] > 0){
return 0;
}
}
alphabet[current_word - 'a']++;
}
return 1;
}
int main() {
int N;
scanf("%d", &N);
int group_word = 0;
for(int i = 0; i < N; i++){
char word[101];
scanf("%s", word);
if(word_count(word)){
group_word++;
}
}
printf("%d", group_word);
return 0;
}
코드 설명
- 그룹 단어를 찾는 함수를 만듬
- 단어를 받아오고 비교할 알파벳을 정함(word[0]부터)
- 비교할 알파벳이 바로 전에 있던 알파벳이랑 다르고
- 바로 전을 제외하고 앞에서 한번이라도 나왔다면 return 0을 출력
- 만약 바로 전이랑 다르지 않거나, 한번도 안나왔다면 비교하고 있는 알파벳을 +1(나온 횟수 추가)하고 return 1을 출력
- 메인 함수에서 0(false)가 아닌 1(ture)면 그룹 단어 카운트 +1
- 반복하고 출력