My Solution
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. \n\n# Complexity\n- Time 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity:\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity:\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```python3 []\nclass Solution:\n    def splitMessage(self, message: str, limit: int) -> List[str]:\n        \n        n = len(message)\n\n        # First determine the length of thingie\n        x = 1\n        # Number of msgs needed\n        msgCount = 0\n\n        # Computes msgCount and its length respectivaly if possible\n        while True:\n            if (3 + 2 * x) >= limit: # suffix exceeds limit\n                # unable to find a number of msgs\n                return []\n            \n\n            # With msgCount of length x, find what msgCount it could be \n            def getMsgCount(x):\n                msgCount = 0\n                total = 0 # max possible msg length\n                for i in range(x):\n                    numMsg = 9 * (10 ** i) # number of messages of length i\n                    suffixLen = 3 + x + (i + 1) # length of suffix needed\n                    lenForMsg = limit - suffixLen # available length for actual message\n                    total += numMsg * lenForMsg\n\n                    if total >= n: # We know now number of msg has thingie of length x:\n                        total -= numMsg * lenForMsg # time to figure out min msg needed\n                        remaining = n - total\n                        extraNeeded = remaining // lenForMsg + (remaining % lenForMsg > 0) # extra msgs of thingie length i\n                        msgCount += extraNeeded # We now have number of msgsNeeded, can break\n                        return msgCount\n                    else:\n                        msgCount += numMsg # Otherwise we continue to keep track of numMsg\n                \n                return 0\n            \n            msgCount = getMsgCount(x)\n            if msgCount != 0:\n                break\n\n            x += 1 # increase length needed\n\n        # print(x)\n        # print(msgCount)\n\n        # Build output\n        output = []\n        a = 0 # pointer for string\n        currMsgCount = 1\n\n        for i in range(x - 1):\n            numMsg = 9 * (10 ** i) # number of messages of length i\n            suffixLen = 3 + x + (i + 1) # length of suffix needed\n            lenForMsg = limit - suffixLen # available length for actual message\n\n            for _ in range(numMsg):\n                output.append(message[a:a + lenForMsg] + f"<{currMsgCount}/{msgCount}>")\n                currMsgCount += 1\n                a += lenForMsg\n        \n        # Finally, rest of messages\n\n        while currMsgCount <= msgCount:\n            suffixLen = 3 + 2 * x # length of suffix needed\n            lenForMsg = limit - suffixLen # available length for actual message\n            output.append(message[a:a + lenForMsg] + f"<{currMsgCount}/{msgCount}>")\n            a += lenForMsg\n            currMsgCount += 1\n\n        return output\n\n                 \n            \n```
['Python3']