알고리즘/완전탐색

[프로그래머스] 최소직사각형 - 파이썬(python)

아뵹젼 2022. 9. 6.

 

 

나의 풀이

def solution(sizes):
    for i in sizes :
        if i[0] < i[1] :
            tmp = i[1]
            i[1] = i[0]
            i[0] = tmp
    
    max_width = max(sizes)[0]
    max_height = max(sizes, key=lambda x:x[1])[1]
    
    return max_width * max_height

가로, 세로 길이 중 더 큰 값을 가로가 되도록 변경한다.

그런다음 가로 중에 가장 큰 값, 세로 중에 가장 큰 값을 곱한 값이 사이즈가 되도록 리턴한다.

 

 

다른 풀이

def solution(sizes):
    return max(max(x) for x in sizes) * max(min(x) for x in sizes)

가로, 세로 중에 큰 값을 고르고, 그 중 가장 큰 값을 고른다.

가로, 세로 중에 작은 값을 고르고, 그 중 가장 큰 값을 고른다.

둘의 곱이 사이즈가 된다.

 

def solution(sizes):
    max_width = 0
    max_height = 0
    for a,b in sizes :
        if a < b :
            a, b = b, a
        max_width = max(max_width, a)
        max_height = max(max_height, b)
    
    return max_width * max_height

sizes 전체에서 max_width, max_height 를 찾는 것은 시간이 오래 걸리므로, 

for문 한 번을 돌 때마다 기존의 max값과 비교하여 더 크다면 갱신하는 방법이다.

댓글