[프로그래머스] 최소직사각형

Mincho·2022년 12월 29일
0
post-thumbnail

🔴최소직사각형

명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다.
아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다.

명함 번호가로 길이세로 길이
16050
23070
36030
48040

가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때의 지갑 크기는 4000(=80 x 50)입니다.
모든 명함의 가로 길이와 세로 길이를 나타내는 2차원 배열 sizes가 매개변수로 주어집니다. 모든 명함을 수납할 수 있는 가장 작은 지갑을 만들 때, 지갑의 크기를 return 하도록 solution 함수를 완성해주세요.
❗제한 사항
◾ sizes의 길이는 1 이상 10,000 이하입니다.
◽ sizes의 원소는 [w, h] 형식입니다.
◽ w는 명함의 가로 길이를 나타냅니다.
◽ h는 명함의 세로 길이를 나타냅니다.
◽ w와 h는 1 이상 1,000 이하인 자연수입니다.

👉입출력 예

sizesresult
[[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



😶나의 풀이

  주어진 사이즈들에서 가장 큰 사이즈를 max값으로 설정하였고, min값은 가장 작은 사이즈로 초기에 설정한다음, minsizes배열안의 배열들과 비교하여 배열안의 사이즈 2가지 모두다 작으면 2가지 사이즈 중 작은 것을 min값으로 설정하였다.

def solution(sizes):
    answer = 0
    data = []
    for size in sizes:		 #data를 1차원 배열로 만들기
        for i in size:
            data.append(i)

    data.sort(reverse=True)  #정렬을 통해 max min값을 구한다.
    max = data[0]
    min = data[len(data) - 1]

    for size in sizes:
        if min < size[0] and min < size[1]: #min값을 sizes요소들과 비교후 교체
            if size[0] < size[1]:
                min = size[0]
            else:
                min = size[1]


    answer = min * max
    return answer
}



😎후기..

  최근 파이썬 수업을 듣고 js가 아닌 파이썬으로 알고리즘을 생각하다가 쓴맛을 보아서 극복하고자 오랜만에 파이썬으로 작성해보았다. max데이터는 금방 구했으나 min값 구현에서 살짝 애를 먹었다. 다른 더 편한 구현방법이 생각나지 않아 다른 분들의 코드를 참고해야겠다....

👍올바른 피드백은 언제든지 환영입니다~!

profile
사진찍는 개발자.

0개의 댓글