코딩테스트) 완전탐색 - 최소 직사각형

Gary's Note·2022년 8월 20일
0

1. ToDo

- 프로그래머스 코딩테스트 풀이


2. 풀이 조건 요약

[기본 조건]

  • sizes의 길이는 1 이상 10,000 이하입니다.
  • sizes의 원소는 [w, h] 형식입니다.
  • w는 명함의 가로 길이를 나타냅니다.
  • h는 명함의 세로 길이를 나타냅니다.
  • w와 h는 1 이상 1,000 이하인 자연수입니다.

[입출력 예시]

  • 명함들을 적절히 회전시켜 겹쳤을 때, 3번째 명함(가로: 8, 세로: 15)이 다른 모든 명함보다 크기가 큽니다. 따라서 지갑의 크기는 3번째 명함의 크기와 같으며, 120(=8 x 15)을 return 합니다.
  • 명함들을 적절히 회전시켜 겹쳤을 때, 모든 명함을 포함하는 가장 작은 지갑의 크기는 133(=19 x 7)입니다.

3. 풀이

def solution(sizes):
    answer = 0

    a, b = [], []
    # 각 단일 사이즈를 가져온다.
    for i in sizes:
        # 가로/세로의 통일성을 위해 직사각형을 회전 개념
        if i[0] < i[1]:
            temp = i[0]
            i[0] = i[1]
            i[1] = temp

        # 그 후 나누어서 각각의 배열에 넣어준다.
        a.append(i[0])
        b.append(i[1])

    # 총 너비에 대한 물음이므로 각각 배열당 최고값을 가져와 너비를 구한다.
    answer = max(a) * max(b)
    return answer
profile
_reap what you sow_

0개의 댓글