1764: 듣보잡
2022. 9. 24. 18:03ㆍC언어/백준
자료구조
실버 4
https://www.acmicpc.net/problem/1764
1764번: 듣보잡
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.
www.acmicpc.net
-결과
-코드
#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와 저장된 이름을 출력하도록 한다.
'C언어 > 백준' 카테고리의 다른 글
11652: 카드 (0) | 2022.09.29 |
---|---|
2675: 문자열 반복 (0) | 2022.09.24 |
18258: 큐 2 (0) | 2022.09.24 |
3052: 나머지 (0) | 2022.09.24 |
1158: 요세푸스 문제 (0) | 2022.09.24 |