(Swift) Programmers 최소직사각형

SteadySlower·2022년 9월 13일
0

Coding Test

목록 보기
156/298

코딩테스트 연습 - 최소직사각형

문제 풀이 아이디어

지갑을 최소한의 크기로 만들려면 가로와 세로 길이를 최대한 작게 만들어야 합니다. 하지만 모든 명함을 수납할 수 있어야 하므로 명함의 가로, 세로 길이의 최댓값을 지갑의 크기로 해야 합니다.

하지만 명함을 돌릴 수 있으므로 지갑의 크기를 최소로 만들기 위해서는 명함을 돌려서 가로, 세로 중에 긴 변을 가로로 가도록 돌리고 그에 맞는 지갑을 만들면 가장 작은 지갑을 만들 수 있습니다.

코드

문제 풀이 아이디어에서는 명함을 돌린다고 표현했지만 입력된 sizes를 실제로 돌릴(?) 필요는 없습니다. 단지 가로, 세로 중에 최댓값과 최솟값을 각각 구해서 그 중에 최댓값을 구하면 되는 것이죠.

풀어서 설명하면 [가로, 세로]의 최댓값 중에 최댓값과 [가로, 세로]의 최솟값 중에 최댓값을 구해서 지갑의 크기로 하면 됩니다.

import Foundation

func solution(_ sizes:[[Int]]) -> Int {
    var maxMax = 0 //👉 최댓값 중에 최댓값
    var maxMin = 0 //👉 최솟값 중에 최댓값
    
    for size in sizes {
        maxMax = max(size.max()!, maxMax) //👉 최댓값 중에 최댓값
        maxMin = max(size.min()!, maxMin) //👉 최솟값 중에 최댓값
    }
    
    return maxMax * maxMin
}
profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글