키가 주어지면
1. index와 함께 pair에 담고 sort
2. 암호문을 받아서 원래 있었던 열에 집어넣고
3. sort(pair<char,index>) 순서를 참고해서 차례대로 출력하면 끝
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 | #include <stdio.h> #include <vector> #include <string.h> #include <algorithm> using namespace std; char key[12], s[102], res[101][10]; vector<pair<char, int>> v; int len, len2, it[10], i, j; int main() { scanf(" %s", &key); len = strlen(key); for (i = 0; i < len; i++) v.push_back({ key[i],i }); sort(v.begin(), v.end()); for (i = 0; i < v.size(); i++) it[v[i].second] = i; scanf(" %s", &s); len2 = strlen(s) / len; for (j = 0; j < len; j++) for (i = 0; i < len2; i++) res[i][j] = s[j*len2 + i]; for (i = 0; i < len2; i++) for (j = 0; j < len; j++) printf("%c", res[i][it[j]]); return 0; } | cs |