백준 1316번 풀이
백준 1316번 풀이
백준 1316번 그룹 단어 체커
로직 구상
- 처음 문자로 몇번 반복해서 단어를 받아야 하는지 체크
- 단어를 다 받아서 저장
- 단어 문자열의 각 문자를 참조, KV라는 배열 만들어서 이전에 사용된적이 있는지 체크
- 사용된적이 없다면, KV를 1로 업데이트, 사용된적 있고 그 전의 값과 동일하지 않다면 그룹 단어 X
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <string.h>
int main() {
int N, M=0;
scanf("%d", &N);
char words[N][100];
for(int i=0; i<N; i++) {
scanf("%s", words[i]);
}
for(int i=0; i<N; i++) {
int KV[26] = {0};
for(int k=0; k<strlen(words[i]); k++) {
if(KV[(int)words[i][k] - 97] != 1) {
KV[(int)words[i][k] - 97] = 1;
}
else if(words[i][k] != words[i][k-1]) {
M += 1;
break;
}
}
}
printf("%d", N - M);
}
고찰
문자를 한번에 받아서 저장하지 않고 각 필요한때마다 가져와서 사용해도 됨. for문 2개 합치기 가능.
This post is licensed under CC BY 4.0 by the author.