beats 100%, 16 line with explanations
Intuition\n\n# Approach\n1. Find the number of digits for the number messages required (3 digits if number of messages required is 100<= #messages <= 999)\n2. F
# Intuition\n\n# Approach\n1. Find the number of digits for the number messages required (3 digits if number of messages required is 100<= #messages <= 999)\n2. Find exact number of messages\n3. Construct the result \n\nFor step 1:\n#### Assuming limit -= 5 (not counting already required characters)\n#### 1 digit enough if\n    N <= 9 * limit\n\n#### 2 digit enough if \n    N <= (limit-1) * 9 + (limit -2) * 90\n#### 3 digit enough if \n    N <= (limit-2) * 9 + (limit -3) * 90 + (limit-4)*900 \n\n# Complexity\n- Time complexity:\n$$O(n)$$\n\n- Space complexity:\n$$O(n)$$\n\n# Code\n```python3 []\nclass Solution:\n    def splitMessage(self, message: str, limit: int) -> List[str]:\n        limit -= 5\n        N = len(message)\n        for d in range(1,100): # find the number of digits of the required number of messages\n            arr = [9*(limit-d+1-i)*10**i for i in range(d)] # max num of msg with varying digits num of messages\n            if arr[0] < 0: return []\n            if N <= sum(arr):\n                break\n\n        remaining_num_chars = N-sum(arr[:-1])\n        msg_count = math.ceil(remaining_num_chars/(limit-2*d+2)) + 10**(d-1) - 1\n\n        total, result = 0, []\n        for m in range(1, msg_count+1):\n            suffix = f\'<{m}/{msg_count}>\'\n            c = limit + 5 - len(suffix)\n            result.append(message[total:total+c] + suffix)\n            total += c\n        return result\n            \n            \n```
['Python3']