VioletaBabel
1620번: 나는야 포켓몬 마스터 이다솜 본문
#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 |