#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; }
2992번: 크면서 작은 수
https://www.acmicpc.net/problem/2992
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기