VioletaBabel

1620번: 나는야 포켓몬 마스터 이다솜 본문

백준/백준-C
1620번: 나는야 포켓몬 마스터 이다솜
Beabletoet 2017. 5. 12. 20:39

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

typedef struct pokemon

{

char name[21];

int num;

struct pokemon *left;

struct pokemon *right;

}poke;


poke *head, *foot, *cursor;


int main()

{

int N, M;

char com[21];

scanf("%d %d", &N, &M);

poke *dic = (poke *)malloc((sizeof(poke))*N);

head = (poke *)malloc(sizeof(poke));

foot = (poke *)malloc(sizeof(poke));

dic[0].num = 1;

scanf("%s", &dic[0].name);

head->left = &(dic[0]);

head->right = &dic[0];

dic[0].left = foot;

dic[0].right = foot;

foot->left = foot;

foot->right = foot;

for (int i = 1; i < N; ++i)

{

dic[i].num = i + 1;

scanf("%s", &dic[i].name);

cursor = &dic[0];

while (1)

if (strcmp(cursor->name, dic[i].name) > 0)

if (cursor->left != foot)

cursor = cursor->left;

else

{

dic[i].left = foot;

dic[i].right = foot;

cursor->left = &dic[i];

break;

}

else if (strcmp(cursor->name, dic[i].name) < 0)

if (cursor->right != foot)

cursor = cursor->right;

else

{

dic[i].left = foot;

dic[i].right = foot;

cursor->right = &dic[i];

break;

}

}


for (int i = 0; i < M; ++i)

{

scanf("%s", &com);

if (com[0] >= 'A' && com[0] <= 'Z')

{

cursor = head->left;

while (1)

if (strcmp(cursor->name, com) == 0)

{

printf("%d\n", cursor->num);

break;

}

else if (strcmp(cursor->name, com) > 0)

cursor = cursor->left;

else

cursor = cursor->right;

}

else

{

N = atoi(com);

printf("%s\n", dic[N - 1].name);

}

}

}





'백준 > 백준-C' 카테고리의 다른 글

1160번: random number generator (실패)  (0) 2017.05.13
8320번: 직사각형을 만드는 방법  (0) 2017.05.12
5639번: 이진 검색 트리  (0) 2017.05.12
1427번: 소트인사이드  (0) 2017.05.05
2108번: 통계학  (0) 2017.05.05
Comments