반응형
https://www.acmicpc.net/problem/2607
2607번: 비슷한 단어
첫째 줄에는 단어의 개수가 주어지고 둘째 줄부터는 한 줄에 하나씩 단어가 주어진다. 모든 단어는 영문 알파벳 대문자로 이루어져 있다. 단어의 개수는 100개 이하이며, 각 단어의 길이는 10 이
www.acmicpc.net
먼저 두 단어의 알파벳 개수를 초기화해주고, 각 알파벳 개수의 차이의 합을 구해줍니다.
길이가 같을 때는, 차이가 2 이하라면 비슷한 단어입니다. (1개 치환하면, 2만큼 차이)
길이가 다를 때는, 차이가 1 이하라면 비슷한 단어입니다.
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
char buf[11];
int n, alp1[26] = { 0 }, alp2[26] = { 0 }, ans = 0, diff;
void init(char* s, int* alp) {
for (int i = 0; i < strlen(s); i++) alp[s[i] - 'A']++;
}
int main() {
scanf("%d %s", &n, buf);
init(buf, alp1);
int blen = strlen(buf);
while (--n && scanf("%s", buf)) {
memset(alp2, 0, sizeof(alp2));
init(buf, alp2);
diff = 0;
for (int i = 0; i < 26; i++) diff += abs(alp1[i] - alp2[i]);
if (diff < (blen == strlen(buf) ? 3 : 2)) ans++;
}
printf("%d", ans);
}
반응형
'Algorithm' 카테고리의 다른 글
백준 1927 : 최소 힙 (0) | 2021.11.14 |
---|---|
백준 20040 : 사이클 게임 (0) | 2021.11.14 |
백준 4195 : 친구 네트워크 (0) | 2021.11.14 |
백준 1976 : 여행 가자 (0) | 2021.11.14 |
백준 1717 : 집합의 표현 (0) | 2021.11.14 |