fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. int check(char ar[], char ch[], int idx);
  6.  
  7. int main() {
  8. char ar[21] = {};
  9. char ch[21] = {};
  10. int N;
  11. gets(ar);
  12. gets(ch);
  13. if(check(ar,ch,strlen(ar)) == 1){
  14. printf("1\n");
  15. }
  16. else if(check(ch,ar,strlen(ch)) == 1){
  17. printf("2\n");
  18. }
  19. else
  20. printf("0");
  21. return 0;
  22. }
  23.  
  24. int check(char ar[], char ch[], int idx){
  25. char tmp1[21] = {}, tmp2[21] = {};
  26. int check = 0;
  27.  
  28. for(int N=1; N<=10; N++){
  29. int cnt = 0, index = 0, s = 0;
  30.  
  31. for(int i=0; i<strlen(ar); i++) // 함수 끝나고 배열값이 바뀌는 것을 방지하기 위한 임시 변수
  32. tmp1[i] = ar[i];
  33. for(int i=0; i<strlen(ch); i++)
  34. tmp2[i] = ch[i];
  35.  
  36. for (int i = 0; i < idx; i++) {
  37.  
  38. if (tmp1[s] >= 'A' && tmp1[s] <= 'Z') {
  39. tmp1[s] = tmp1[s] + N;
  40. if(tmp1[s] == tmp2[index])
  41. cnt++;
  42. } // 대문자
  43.  
  44. else if (tmp1[s] >= 'a' && tmp1[s] <= 'z') {
  45. tmp1[s] = tmp1[s] - N;
  46. if(tmp1[s] == tmp2[index])
  47. cnt++;
  48. } // 소문자
  49.  
  50. else if (tmp1[s] > '0' && tmp1[s] <= '9') {
  51. int k = 0;
  52. k = tmp1[s] - '0';
  53. if(tmp1[s] == '1'){
  54. if (tmp1[s + 1] >= '0' && tmp1[s + 1] <= '9') {
  55. k *= 10;
  56. k += tmp1[s + 1] - '0';
  57. s++;
  58. }
  59. }
  60. if(tmp1[s] == '2'){
  61. if (tmp1[s + 1] >= '0' && tmp1[s + 1] <= '6') {
  62. k *= 10;
  63. k += tmp1[s + 1] - '0';
  64. s++;
  65. }
  66. }
  67.  
  68. char u = 'A' + k - 1;
  69.  
  70. for(int j=0; j<N; j++){ // N번만큼 반복
  71. if(u == tmp2[index]){
  72. cnt++;
  73. index++;
  74. }
  75. }
  76. index--; // for문 과정에서 1이 더 오름
  77. } // 숫자
  78.  
  79. else {
  80. if(tmp2[index] == ' ')
  81. cnt++;
  82. } // 특수문자
  83.  
  84. index++;
  85. s++;
  86.  
  87. } // 문자열 크기만큼 반복
  88. printf("%s₩n",tmp1);
  89. if(strlen(tmp2) == cnt){ // 변경 가능할 시
  90. check = 1;
  91. break;
  92. }
  93. else // 변경 불가능할 시
  94. continue;
  95.  
  96. } // N for문
  97. if(check == 1)
  98. return 1;
  99. else
  100. return 0;
  101. }
Success #stdin #stdout 0s 5396KB
stdin
abc1616
ghiPPPPPPPPPPPP
stdout
`ab1616₩n_`a1616₩n^_`1616₩n]^_1616₩n\]^1616₩n[\]1616₩nZ[\1616₩nYZ[1616₩nXYZ1616₩nWXY1616₩nfghQQQQQQQQQQQQ₩nefgRRRRRRRRRRRR₩ndefSSSSSSSSSSSS₩ncdeTTTTTTTTTTTT₩nbcdUUUUUUUUUUUU₩nabcVVVVVVVVVVVV₩n`abWWWWWWWWWWWW₩n_`aXXXXXXXXXXXX₩n^_`YYYYYYYYYYYY₩n]^_ZZZZZZZZZZZZ₩n0