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

김멉덥·2023년 7월 25일
0

알고리즘 공부

목록 보기
68/171
post-thumbnail
post-custom-banner

문제

프로그래머스 코딩테스트 고득점 Kit - 완전탐색


코드 구현

def solution(sizes):
    answer = 0
    
    # 가로 중 최대값 x 세로 중 최대값 이 제일 작은거 구하기
    # 가로 세로 서로 교체 가능
    
    width = []
    height = []
    # 가로 vs 세로 중 둘 중 작은 수를 우선 가로에 다 배치
    for i in sizes:
        if(i[0] > i[1]):
            i[0], i[1] = i[1], i[0]
        width.append(i[0])
        height.append(i[1])
    
    # 가로의 최대 x 세로의 최대 구하기
    answer = max(width) * max(height)
    
    return answer

풀이

  • 가로와 세로를 비교하였을 때, 둘 중 작은 수들을 모두 가로쪽에 배치하고나서 가로들의 최대값 * 세로들의 최대값을 해주면 된다.

What I learned

def solution(sizes):
    return max(max(x) for x in sizes) * max(min(x) for x in sizes)
  • max(x) for x in sizessizes 배열의 요소들 중 [가로, 세로] 에서 둘 중 큰 값을 구하게 됨
    • ex) sizes : [[60, 50], [30, 70], [60, 30], [80, 40]], max(x) for x in sizes : [60, 70, 60, 80]
  • min(x) for x in sizessizes 배열의 요소들 중 [가로, 세로] 에서 둘 중 작은 값을 구하게 됨
    • ex) sizes : [[60, 50], [30, 70], [60, 30], [80, 40]], min(x) for x in sizes : [50, 30, 30, 40]
  • 가로 vs 세로 중 둘 중 더 큰 값들의 최대값 * 둘 중 더 작은 값들의 최대값 이 정답이 된다.
profile
데굴데굴 뚝딱뚝딱 개발기록
post-custom-banner

0개의 댓글