■■■■■■■■■■BINARY TREE APPROACH, BRAND NEW■■■■■■■■■■
Intuition\n Describe your first thoughts on how to solve this problem. \nbinary approacch, nlogn\ninput arange was 100,000\n\n# Approach\n Describe your approac
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\nbinary approacch, nlogn\ninput arange was 100,000\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\nbinary search\n\n# Complexity\n- Time complexity: m * nlogn\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity: m * nlogn\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```cpp []\nclass Solution {\npublic:\n    vector<string> final_ret;\n    bool flag = false;\n\n    int get_len_of_num(int n) {\n        int cnt = 0;\n        \n        while (n) {\n            n = n / 10;\n            cnt++;\n        }\n\n        return cnt;\n    }\n\n    bool check_validation(string message, int limit, int dividen_cnt) {\n        queue<char> q1;\n        int ret = 0;\n\n        for (int i = 0; i < message.size(); i++) q1.push(message[i]);\n        int length_for_dividen_cnt = get_len_of_num(dividen_cnt);\n\n        int i = 0;\n        vector<string> temp;\n\n        for (i = 1; i <= dividen_cnt; i++) {\n            // <1/18>\n            string cur_temp = "<" + to_string(i) + "/" + to_string(dividen_cnt) + ">";\n            int cur = 1 + get_len_of_num(i) + 1 + length_for_dividen_cnt + 1;\n            int iteration = limit - cur;\n\n            if (iteration <= 0)\n                return false;\n\n            string cur_temp2 = "";\n            while (!q1.empty() && iteration) {\n                cur_temp2.push_back(q1.front());\n                q1.pop();\n                iteration--;\n            }\n\n            string input_temp = cur_temp2 + cur_temp;\n            temp.push_back(input_temp);\n        }\n\n        if (q1.size() == 0) {\n            final_ret = temp;\n            flag = true;\n            return true;\n        } else\n            return false;\n    }\n\n    vector<string> splitMessage(string message, int limit) {\n        int left_array[5] =  { 0,   9,   99,   999,  9999 };\n        int right_array[5] = { 10, 100, 1000, 10000, 10001 };\n\n        for (int k = 0; k < 5; k++) {\n            int left = left_array[k];\n            int right = right_array[k];\n\n            int mid = (left + right) / 2;\n\n            while (left != mid) {\n                if (check_validation(message, limit, mid))\n                    right = mid;\n                else\n                    left = mid;\n\n                mid = (left + right) / 2;\n            }\n\n            if (flag)\n                break;\n        }\n\n        return final_ret;\n    }\n};\n\n```
['C++']