페이지

2992번: 크면서 작은 수

https://www.acmicpc.net/problem/2992


#include<stdio.h>
#include<string.h>
int len, abc[15], pos[15];
char data[10];
int main()
{
    int i, j, tmp;
    char ctmp;
    scanf("%s", &data);
    len = strlen(data);
    abc[data[len - 1] - '0'] = 1;
    pos[data[len - 1] - '0'] = len - 1;
    for (i = len - 2; i >= 0; i--)
    {
        abc[data[i] - '0'] = 1;
        pos[data[i] - '0'] = i;
        if (data[i]<data[i + 1])
        {
            tmp = i;
            for (i = data[tmp] - '0' + 1; i <= 10; i++)
            {
                if (abc[i] == 1)
                {
                    ctmp = data[tmp];
                    data[tmp] = data[pos[i]];
                    data[pos[i]] = ctmp;
                    break;
                }
            }
            break;
        }
    }
    if (i == -1)
    {
        printf("0");
    }
    else
    {
        for (i = tmp + 1; i <= len - 2; i++)
        {
            for (j = i + 1; j <= len - 1; j++)
            {
                if (data[i]>data[j])
                {
                    ctmp = data[i];
                    data[i] = data[j];
                    data[j] = ctmp;
                }
            }
        }
        printf("%s", data);
    }
    return 0;
}

댓글 없음 :

댓글 쓰기