자료구조&알고리즘/프로그래머스

[Python] 최소 직사각형 - 완전탐색

두잇 두두 2024. 2. 14. 21:47
728x90

 


문제

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

 

프로그래머스

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

programmers.co.kr

 

 

코드

def solution(sizes):
    max_width = 0
    max_height = 0
    
    for card in sizes:
        width, height = sorted(card)
        max_width = max(max_width, width)
        max_height = max(max_height, height)

    return max_width * max_height

sorted를 통해서 width와 height 둘 중 큰 수를 앞으로

max를 통해서 가장 큰 값들을 뽑아낸다

 

 

 

다른 사람 코드

 

solution = lambda sizes: max(sum(sizes, [])) * max(min(size) for size in sizes)

sizes, []는 2차원 배열을 1차원으로 펼치기 위해 사용하고 펼친 뒤 가장 큰 값(가장 큰 가로나 세로의 길이), max(min)size는 가장 짧은 길이 중 가장 큰 값을 찾습니다.

def solution(sizes):
    flattened_sizes = sum(sizes, [])
    max_width = max(min(size) for size in sizes)
    return max_width * max(flattened_sizes)

 

접근법

 

 

 

 

 

배운 점

sizes = [[60, 50], [30, 70], [60, 30], [80, 40]]
result = sum(sizes, [])
#[60, 50, 30, 70, 60, 30, 80, 40]

 

댓글수0