# 2160. Minimum Sum of Four Digit Number After Splitting Digits ## 題目概要 給定一個正整數 num,num 由四個數組成,找出拆分成兩個數後最小的總和,還是看 Example 更容易理解題意。 ``` xample 1: Input: num = 2932 Output: 52 Explanation: Some possible pairs [new1, new2] are [29, 23], [223, 9], etc. The minimum sum can be obtained by the pair [29, 23]: 29 + 23 = 52. Example 2: Input: num = 4009 Output: 13 Explanation: Some possible pairs [new1, new2] are [0, 49], [490, 0], etc. The minimum sum can be obtained by the pair [4, 9]: 4 + 9 = 13. ``` ## 解題技巧 - 因為要求最小總和,所以我第一個念頭就是將數字由小到大排序。 - 接著我根據兩個範例得到了一個規律,最終的最小值會是由小到大排序後第一個、第三個數組成的一個數,另一個則是第二和第四個組成的一個數,兩數相加就會是結果。比如說 2932 由小到大排為 2239,那麼結果就會是 23 + 29 = 52;另一個範例為 4009,由小到大排為 0049,結果就為 04 + 09 = 13 - 如果不確定推論是否正確,可以多丟幾筆測資進去跑。 ## 程式碼 第一種方法, 先轉數字後相加: ```javascript= var minimumSum = function(num) { // 將 num 每個位數拆分後存成 array const arr = num.toString().split('').map(item => parseInt(item, 10)); // 由小到大排序 arr.sort(); // 第一個數為 第一位數 * 10 + 第三位數 const firstNum = (arr[0] * 10 + arr[2]); // 第二個數為 第二位數 * 10 + 第四位數 const secondNum = (arr[1] * 10 + arr[3]); return firstNum + secondNum; }; ``` ![](https://i.imgur.com/rRiuC4D.png) **第二種方法(推薦)**, 用字串相接的特性省去先轉數字的步驟, 可以少一個遍歷: ```javascript= var minimumSum = function(num) { // 將 num 每個位數拆分後存成 array const arr = num.toString().split(''); // 由小到大排序 arr.sort(); return Number(arr[0] + arr[2]) + Number(arr[1] + arr[3]); }; ``` ![](https://i.imgur.com/lMnnmKQ.png)