프로그래머스 - 최소직사각형 (파이썬) 문제 및 풀이

초코칩·2022년 12월 5일
0

Programmers

목록 보기
1/2
post-thumbnail

문제

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

모든 명함의 가로 길이와 세로 길이를 나타내는 2차원 배열 sizes가 매개변수로 주어집니다. 모든 명함을 수납할 수 있는 가장 작은 지갑을 만들 때, 지갑의 크기를 return 하도록 solution 함수를 완성해주세요.

풀이

각 지갑의 사이즈를 확인합니다. w, h를 이용하여 sizes를 순회하면서 가로/세로 길이가 w, h보다 작을 경우 다음 size로 넘어갑니다. 그렇지 않을 경우, 가로/세로 길이를 비교하여 작은 넓이를 갖는 것을 선택하고 w, h를 갱신합니다.

코드

import sys
input = sys.stdin.readline

def solution(sizes):
    w, h = sizes[0][0], sizes[0][1]
    answer = w * h
    
    for i in range(1, len(sizes)):
        if w >= sizes[i][0] and h >= sizes[i][1]:
            continue
        elif w >= sizes[i][1] and h >= sizes[i][0]:
            continue
        else:
            temp_w1 = max(w, sizes[i][0])
            temp_h1 = max(h, sizes[i][1])
            
            temp_w2 = max(w, sizes[i][1])
            temp_h2 = max(h, sizes[i][0])
            if temp_w1 * temp_h1 > temp_w2 *  temp_h2:
                w = temp_w2
                h = temp_h2
                answer = w * h
            else:
                w = temp_w1
                h = temp_h1
                answer = w * h
                
    return answer
profile
초코칩처럼 달콤한 코드를 짜자

0개의 댓글