---
# System prepended metadata

title: 2160. Minimum Sum of Four Digit Number After Splitting Digits

---

# 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)
