본문 바로가기

알고리즘 삽질장

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

반응형


문제설명

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

 

코딩테스트 연습 - 최소직사각형

[[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133

programmers.co.kr

사고과정

  • 모든 명함들을 다 넣을 수 있는 최소 지갑 크기를 구해야 한다. 명심해야 할 점은 주어진 명함의 가로, 세로를 바꾸어서 수납이 가능하다는 점!
  • 그래서 우선은 각 명함마다 길이를 오름차순으로 모두 정렬하면서 가로, 세로 길이를 오름차순으로 재정렬한다. 그리고 난 뒤의 가로 길이의 최댓값, 세로길이의 최댓값을 구한 후 넓이를 구해주면 된다!

풀이

def solution(sizes):
    for i in range(len(sizes)):
        sizes[i] = sorted(sizes[i])
    horizon = 0
    vertical = 0
    for i in range(len(sizes)):
        horizon = max(horizon, sizes[i][0])
        vertical = max(vertical, sizes[i][1])
    
    return horizon * vertical
반응형