알고리즘 문제풀이/프로그래머스

[프로그래머스/Python/완벽탐색] Level 1 86491 - 최소직사각형

sdbeans 2023. 8. 18. 15:44

https://school.programmers.co.kr/learn/courses/30/lessons/86491

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

Input: 가로 길이와 세로 길이 pair들을 element으로 가진 2차원 배열

 

가로와 세로는 서로 interchangable 하다.

따라서 가장 작은 직사각형을 만들기 위해선, 각 명함의 가로 세로 중 더 긴 변들을 비교하여 직사각형의 한 변을 만들고, 더 짧은 변들을 비교하여 직사각형의 다른 한 변을 만든다.

 

완전탐색 방법으로 각 명함을 확인하고, 길이가 긴 변들 중 가장 긴 변, 그리고 길이가 짧은 변들 중 가장 긴 변을 찾아 직사각형을 만든다.

 

def solution(sizes):
    w = 0
    h = 0
    for x, y in sizes:
        if x > y:
            w = max(w, x)
            h = max(h, y)
        else:
            w = max(w, y)
            h = max(h, x)
    return w * h