[프로그래머스] Lv.1 최소직사각형

Tony Kim·2022년 1월 21일
0
post-thumbnail

프로그래머스

Lv.1 최소직사각형

1.문제

input 가로세로 쌍
output 최소 직사각형 크기

2. 풀이

하나하나 돌면서 확인했지만 더 쉬운풀이가 있었음.
문제가 어떤 풀이법을 요구하는지 많이 생각해보고 코드를 짜자.

3. 코드

나의 풀이 (하나빼고 통과ㅠㅠ)

def solution(sizes):
    w, h = [], []
    for i in sizes:
        w.append(i[0])
        h.append(i[1])    
    w_max = max(w)
    h_max = max(h)
    for i in range(len(w)):
        if w[i] == h[i] == h_max:
            return h_max * h_max
    if w_max >= h_max:
        h_max = 0
        for i in range(len(w)):
            if w[i] > h[i] > h_max:
                h_max = h[i]
            elif h[i] > w[i] > h_max:
                h_max = w[i]
    elif w_max < h_max:
        w_max = 0
        for i in range(len(w)):
            if h[i] > w[i] > w_max:
                w_max = w[i]
            elif w[i] > h [i] > w_max:
                w_max = h[i]
    return h_max * w_max

모범코드1

def solution(sizes):
    w = []
    h = []
    for size in sizes:
        if size[0] >= size[1]:
            w.append(size[0])
            h.append(size[1])
        else:
            h.append(size[0])
            w.append(size[1])
    return max(w) * max(h)

모범코드2

def solution(sizes):
    return max(max(x) for x in sizes) * max(min(x) for x in sizes)
  • 큰값을 가로 작은값을 높이로 통일해서 계산하면 훨씬 더 쉽게 계산가능한 문제였다.
profile
Back-end-dev

0개의 댓글