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

임정민·2023년 10월 6일
1

알고리즘 문제풀이

목록 보기
115/173
post-thumbnail

프로그래머스 Lv1 문제입니다. 실전에 대비하기 위해 30분 시간제한을 두고 풀었습니다.

문제

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

[나의 풀이]

⌛ 17분 소요


def solution(sizes):
    answer = 0

    start = sorted(sizes[0],reverse=True)
    big = start[0]
    small = start[1]

    for size in sizes:
        size = sorted(size,reverse=True)
        w, h = size

        
        if w>=big :
            big = w
        if h>=small:
            small = h

    answer = big*small

    return answer

[[60, 50], [30, 70], [60, 30], [80, 40]] 와 같이 명함의 가로,세로 길이들이 입력되었을 때 모든 지갑 사이즈를 수납할 수 있는 지갑의 크기를 구하는 문제입니다. 가로,세로 길이 중 큰 길이와 작은 길이를 갱신하여 최대사이즈을 연산하면 되는 문제였습니다.🚗🚗🚗

[다른 사람의 풀이1]


def solution(sizes):
    return max(max(x) for x in sizes) * max(min(x) for x in sizes)

'나의 풀이' 코드와 같은 원리를 간단히 구현한 방식입니다. 입력된 가로, 세로 길이(sizes)에서 max(최댓값 리스트) * max(최솟값 리스트)로 표현하여 간결히 해결한 모습입니다.

[다른 사람의 풀이2]


def solution(sizes):
    
    allWidth = []
    allHeight = []
    for size in sizes:
        if size[0] < size[1]:
            size[0], size[1] = size[1], size[0]
        
        allWidth.append(size[0])
        allHeight.append(size[1])

    return max(allWidth) * max(allHeight)

최댓값 리스트, 최솟값 리스트를 새로운 리스트에 저장하고 각 최댓값을 연산하여 최대 사이즈를 구하는 풀이입니다.🦝🦝🦝

감사합니다.

profile
https://github.com/min731

0개의 댓글