Programming/c

[2**][๊ตฌ์กฐ์ฒด] S-๋งˆํŠธ์˜ ๊ณ ๊ฐ๊ด€๋ฆฌ๋ถ€ : ๊ณ ๊ฐ์ •๋ณด ์ž…๋ ฅ๋ฐ›์•„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ €์žฅ, ๋ฒˆํ˜ธ ๊ฐ™๋‹ค๋ฉด ์ด๋ฆ„์ˆœ์œผ๋กœ ์ €์žฅ ํ›„ ์ถœ๋ ฅ

ํ•ด๋“œ์œ„๊ทธ 2021. 5. 18. 16:37
๋ฐ˜์‘ํ˜•

์ž…๋ ฅ์˜ˆ์‹œ 1

5 KimSooJin 010-1234-5678

ParkGilDong 010-2468-2468

ChungSangChul 010-1230-4567

LeeYoungHee 010-1357-2468

ChoiMyungHee 010-3458-1267 2468

 

์ถœ๋ ฅ์˜ˆ์‹œ 1

2 LeeYoungHee 010-1357-2468

3 ParkGilDong 010-2468-2468

 

 

์ฝ”๋“œ:

 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct customer {
	char id[5];
	char* name;
	char* phone;
};

int main() {
	struct customer* ct;
	int n, cnt = 0;
	char tmp1[51], tmp2[51];
	int len1 = 0, len2 = 0;
	char num[5], temp[5];

	scanf("%d", &n);
	ct = (struct customer*)malloc(n * sizeof(struct customer));
	if (ct == NULL) {
		printf("Not enough memory!");
		return -1;
	}

	for (int i = 0; i < n; i++) {
		scanf("%s %s", tmp1, tmp2);

		len1 = strlen(tmp1);
		len2 = strlen(tmp2);

		(ct + i)->name = (struct customer*)malloc((len1 + 1) * sizeof(struct customer));
		if ((ct + i)->name == NULL) {
			printf("Not enough memory!");
			return -1;
		}
		strcpy((ct + i)->name, tmp1);

		(ct + i)->phone = (struct customer*)malloc((len2 + 1) * sizeof(struct customer));
		if ((ct + i)->phone == NULL) {
			printf("Not enough memory!");
			return -1;
		}
		strcpy((ct + i)->phone, tmp2);
	}

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			if (strncmp((ct + i)->phone + 9, (ct + j)->phone + 9, 4) < 0) {
				strcpy(tmp1, (ct + i)->name);
				strcpy((ct + i)->name, (ct + j)->name);
				strcpy((ct + j)->name, tmp1);

				strcpy(tmp2, (ct + i)->phone);
				strcpy((ct + i)->phone, (ct + j)->phone);
				strcpy((ct + j)->phone, tmp2);
			}
			else if (strncmp((ct + i)->phone + 9, (ct + j)->phone + 9, 4) == 0) {
				if (strcmp((ct + i)->name, (ct + j)->name) < 0) {
					strcpy(tmp1, (ct + i)->name);
					strcpy((ct + i)->name, (ct + j)->name);
					strcpy((ct + j)->name, tmp1);

					strcpy(tmp2, (ct + i)->phone);
					strcpy((ct + i)->phone, (ct + j)->phone);
					strcpy((ct + j)->phone, tmp2);
				}
			}
		}
	}

	scanf("%s", num);

	for (int i = 0; i < n; i++) {
		int k = 0;
		int chk = 0;
		int flag = 0;
		for (int j = 9; j <= 12; j++) {
			if (strncmp((ct + i)->phone + 9, num, 4) == 0) {
				flag++;
				chk = i;
			}
		}
		if (flag == 4) {
			printf("%d %s %s\n", chk + 1, (ct + chk)->name, (ct + chk)->phone);
			cnt++;
		}
	}

	if (cnt == 0)
		printf("none");

	for (int i = 0; i < n; i++) {
		free((ct + i)->name);
		free((ct + i)->phone);
	}
	free(ct);

	return 0;
}

 

*4-1 ์ฝ”๋“œ์— ์˜ค๋ฆ„์ฐจ์ˆœ & ๋ฒˆํ˜ธ๊ฐ™์„ ๋•Œ ์ด๋ฆ„์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•˜๋Š” ์ฝ”๋“œ๋งŒ ๋„ฃ์–ด์ฃผ๋ฉด ๋จ

๋ฐ˜์‘ํ˜•