문제풀이/프로그래머스

[프로그래머스][완전 탐색] - 최소 직사각형(파이썬/Python)

얄루몬 2022. 7. 14. 02:45

def solution(s):
    a = []
    b = []
    for i in range(len(s)):
        if s[i][0] > s[i][1]:
            a.append(s[i][0])
            b.append(s[i][1])
        else:
            a.append(s[i][1])
            b.append(s[i][0])
                       
    
    return max(a) * max(b)

  • 가로와 세로 중 더 큰 수를 모아 두고 더 작은 수를 작은 수끼리 모아 그 두 모임의 가장 큰 수를 찾아 곱해주면 된다.
  • 이때 가로와 세로라는 것에 목메지 않는다면 쉽게 풀 수 있는 문제이다. (어떤 또 다른 관점으로 보면 가로는 세로고 세로는 가로가 될 수 있기 때문이다.)

오답

def solution(sizes):
    answer =[]
    n = len(sizes) -1
    for i in sizes:
        for j in i:
            answer.append(j)
    
    answer.sort()

    return answer[n] * answer[-1]
  • 이 경우는 모든 수를 늘어뜨려 가장 중간에 있는 수와 맨 마지막에 있는 수를 곱하면 된다고 생각해서 풀어본 풀이다.
  • 그러나 이 경우는 전체 정렬로 순서가 예상치 못하게 되는 변수가 있어 그런듯 싶다.