C++ Solution with Simple Explanation (Diagonal Traversal)
Idea: - Its given in Question that matrix would be filled up till last coloumn and we will always be starting from (0,0) ,and we are given encrypted string and 
Idea: - Its given in Question that matrix would be filled up till last coloumn and we will always be starting from (0,0) ,and we are given encrypted string and rows . we will find no of cols then  firstly we will construct a 2D matrix and fill our encypted string just as shown in question\'s pic . Then we will traverse it diagonally and construct our orignal string . In the last step we will remove extra spaces at end of orignal string\n\n\n**Step 1 :** To find no of cols , its basically length of encypted string / rows .(because we know from question that filling would start from (0,0) and go uptill last col for sure )\n\n**Step 2 :**  Now we will fill our encypted string in that matrix . Will fill first row then move to second row and continue this uptill last row\n\n**Step 3 :** -  Now all we need to do is traverse diagonally and start building up our orignal string .lets see this step in detail . eg we need to traverse  matrix of row=4 , col=6 (example of I love leetcoding matrix given in question)\n\n(0,0)  -> (1,1) -> (2,2) -> (3,3)\n(0,1)  -> (1,2) -> (2,3) -> (3,4)\n(0,2)  -> (1,3) -> (2,4) -> (3,5)\n(0,3)  -> (1,4) -> (2,5)\n(0,4)  -> (1,5)\n(0,5)\n\nHere we clearly see we need to do 6 iteration (or we can say no of iteration=no of cols), and in every iteration ith index will start from 0 and go at max till no of rows -1 , jth index starts 0 in first iteration , from 1 in second iteration and will go at max till col-1 . Now we just need to write that in code \n\n\n\n```\nstring decodeCiphertext(string encodedText, int rows) \n    {\n      int n=encodedText.size();\n\t  \n\t  // finding no of cols (Step 1)\n\t  \n      int col=n/rows;\n      \n      // creating 2D matrix  (Step 2)\n\t  \n      vector<vector<char>>matrix(rows,vector<char>(col));\n      \n      int index=0;\n\t  \n\t  // Filling 2D matrix (Step 2)\n\t  \n      for(int i=0;i<rows;i++)\n      {\n        for(int j=0;j<col;j++)\n        {\n          matrix[i][j]=encodedText[index++];\n        }\n      }\n      \n\t  \n\t  // Traversing diagonally (Step 3)\n\t  \n      string ans="";\n\t  \n      for(int j = 0; j < col; j++) \n      {\n            int r = 0;\n            int c = j;\n            while(c < col and r < rows) \n            {\n                ans += matrix[r++][c++];\n            }\n      }\n      \n     \n\t // Last Step (Removing extra spaces from our orignal string)\n\t \n     while (!ans.empty() && ans.back() == \' \') \n     {\n            ans.pop_back();\n     }\n      \n      return ans;\n      \n\n      \n    }\n```
['C']