C언어/백준
1764: 듣보잡
road23
2022. 9. 24. 18:03
자료구조
실버 4
https://www.acmicpc.net/problem/1764
-결과
-코드
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int comp(const void*a, const void*b);
struct who {
char name[21];
};
struct same {
char who[21];
};
struct who name[1000001];
struct same who[500001];
int main(){
int n, m, i, j, c = 0;
scanf("%d %d", &n, &m);
for (i=0;i<n+m;i++) {
scanf("%s", name[i].name);
}
qsort(name, n+m, sizeof(name[0]),comp);
for (i=0;i<n+m;i++) {
if (strcmp(name[i].name, name[i+1].name) == 0) {
strcpy(who[c].who,name[i].name);
i++;
c++;
}
}
printf("%d\n", c);
for (i=0;i<c;i++) {
printf("%s\n", who[i].who);
}
}
int comp (const void*a, const void*b) {
return (strcmp((char*)a, (char*)b));
}
-풀이
겹치는 인원을 세고, 그 사람들의 이름을 출력해야 한다.
그렇기 때문에 구초체를 이용하여 베열에 이름을 정렬한다.
만약 입력받은 이름이 같다면 변수 c를 증가하여 저장한다.
그리고 i++를 하여 다음 배열로 넘어가도록 작성한다.
마지막으로 변수 c와 저장된 이름을 출력하도록 한다.