본문 바로가기
Computer Science

A응실 K번째 접미어 / strcmp, q_sort

by OKOK 2018. 12. 18.

1. q_sort, strcmp

2. 오케이

3. 문자열을 비교해서

4. 순서를 만들고

5. 출력함

6. 문자열을 다룰 수 있는가?

7. q_sort 사용가능한가? 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <stdio.h>
#define MAX 10
//#define MAX 1000
int K;
 
char src[MAX];
int num[MAX];
 
 
int str_len(char * s)
{
    int n = 0;
    while (s[n]) n++;
    return n;
}
 
int str_cmp(char * a, char * b)
{
    while (*|| *b)
    {
        if (*!= *b) return *- *b;
        a++;
        b++;
    }
    return 0;
}
 
void q_sort(int s, int e)
{
    int T, L, P = e, tmp;
 
    if (s >= e) return;
 
    for (L = s, T = s; L < e; L++)
    {
        if (str_cmp(&src[num[L]], &src[num[P]]) < 0)
        {
            if (L != T)
            {
                tmp = num[L];
                num[L] = num[T];
                num[T] = tmp;
            }
            T++;
        }
 
    }
 
    if (T != P)
    {
        tmp = num[T];
        num[T] = num[P];
        num[P] = tmp;
    }
 
    q_sort(s, T - 1);
    q_sort(T + 1, e);
}
 
int main(void)
{
    freopen("input.txt""r", stdin);
    int T;
    scanf("%d"&T);
    for (int t = 1; t <= T; t++)
    {
        scanf("%d%s"&K, src);
        int l = str_len(src);
        for (int i = 0; i < l; i++) num[i] = i;
        q_sort(0, l - 1);
        if (0 <= K && K<l) printf("#%d %s\n", t, &src[num[K - 1]]);
        else printf("none\n");
        for (int i = 0; i < l; i++) num[i] = src[i] = 0;
    }
    return 0;
}
 
cs


댓글