[programmers]level 1-最小矩形(lang:swift)


問題の説明
名刺入れを作っている会社は財布の大きさを確認したいです.様々な形や大きさの名刺を収納でき、コンパクトで持ち運びに便利な財布を作る必要があります.これらの要件を満たすために、設計チームはすべての名刺の横方向と縦方向の長さを調査した.
次の表に、4種類の名刺の水平と垂直の長さを示します.
名刺番号横長縦長
1 60 50
2 30 70
3 60 30
4 80 40
最も長い横長と縦長はそれぞれ80と70であるため、80(横)x 70(縦)サイズの財布を作成すると、すべての名刺を収容することができる.ただし、横に2番の名刺を収納する場合は、80(横)x 50(縦)サイズの財布ですべての名刺を収納できます.財布のサイズは4000(=80 x 50)です.
パラメータは、すべての名刺の水平と垂直の長さを表す2 D配列サイズです.すべての名刺を収納できる最小財布を作成する場合は、財布の大きさを返すための解関数を完了します.
せいげんじょうけん
sizesの長さは10000より大きい.
sizesの要素は[w,h]形式です.
w名刺の水平長さを表す.
hは名刺の垂直な長さを表す.
wとhは1以上1000以下の自然数である.
I/O例
sizes	result
[[60, 50], [30, 70], [60, 30], [80, 40]]	4000
[[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]]	120
[[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]]	133
I/O例説明
I/O例#1
問題の例を以下に示します.
I/O例#2
名刺を適当に回して重ねると、3枚目の名刺(横:8、縦:15)が他のすべての名刺よりも大きくなります.そのため、財布の大きさは3枚目の名刺の大きさと同じで、120(=8 x 15)を返します.
I/O例#3
名刺が適切に回転して重なると、すべての名刺を含む最小財布サイズは133(=19 x 7)となる.
==============================================
私が書いたコード
import Foundation

/*
  - 가로를 긴 길이로 셋팅
 */
func solution(_ sizes:[[Int]]) -> Int {
    var tempSize: Int = 0
    var tempSizeList: [[Int]] = sizes
    
    for index in 0...tempSizeList.count-1 {
        if tempSizeList[index][0] < tempSizeList[index][1] {
            tempSize = tempSizeList[index][0]
            tempSizeList[index][0] = tempSizeList[index][1]
            tempSizeList[index][1] = tempSize
        }
    }
    
    var firstList: [Int] = []
    var secondList: [Int] = []
    
    for element in tempSizeList {
        firstList.append(element[0])
        secondList.append(element[1])
    }
    
    return (firstList.max() ?? 0) * (secondList.max() ?? 0)
}
他人を解く
import Foundation

func solution(_ sizes:[[Int]]) -> Int {
    var maxNum = 0
    var minNum = 0

    for size in sizes {
        maxNum = max(maxNum, size.max()!)
        minNum = max(minNum, size.min()!)
    }
    return maxNum * minNum
}