본문 바로가기

Development/CodingTest

[완전 탐색] 프로그래머스 level 1 최소직사각형 python 풀이

무식해 보여도 사실은 최고의 방법일 때가 있지요.

완전 탐색?

모든 가능한 경우의 수를 시도하여 원하는 결과를 찾는 알고리즘 기법.

브루트 포스(Brute Force)라고도 함.

경우의 수가 많거나 입력 크기가 큰 경우에는 계산 비용이 높아질 수 있다.

완전 탐색은 작은 규모의 문제나 기준이 명확한 경우에 유용함.

 

해결 흐름

1. 가로나 세로 중에서 가장 큰 값이 다음 직사각형의 가로나 세로 값보다 작으면 교체 -> 즉 가장 큰 값을 찾아야함

2. 만약 가로 값이 가장 큰 값 일때, 세로 값도 다른 직사각형의 세로 값보다 커야함 -> 즉 작은 값들중 가장 큰 값을 찾아야함

3. 직사각형들 중에서 하나의 직사각형 가로나 세로중 더 큰 값들 중에 가장 큰 값 * 작은 값들 중에서 큰 값

 

코드

def solution(sizes):
    max_value = max(max(size[0], size[1]) for size in sizes)
    min_value = max(min(size[0], size[1]) for size in sizes)
    return max_value * min_value