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

do yeon kim·2022년 9월 15일
0
회고

지금까지 사용한 메서드도 활용에 따라서는 새롭게 사용할 수 있다.
지금까지 sum()은 단순히 리스트내의 원소의 합을 반환하는 메서드로 알고 있었으나, 사용방법에 따라서 다르게 사용할 수 있다.

메서드에는 2번째 인자로 옵션을 줄 수도 있다.

이 옵션을 주지 않았을시 디폴트값으로 보통 메서드가 제공하는 기능을 구현하나, 만약 옵션을 추가하게 되면 그와는 다른 기능을 수행하게 할 수 있다.

어려운 메서드를 알려고 하는게 아닌 기본적인 메서드가 제공하는 옵션에 대한 이해 역시 필요하다는 생각이 든다.



문제풀이

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

# 풀이1
def solution(sizes):
    sizes = [sorted(i) for i in sizes]
    max_height = max([(i[0]) for i in sizes])
    max_width = max([(i[1]) for i in sizes])
    
    return max_width * max_height



# 풀이2
def solution(sizes):
    max_height = 0
    max_width = 0
    for i in [sorted(i) for i in sizes]:
        if i[0] > max_height:
            max_height = i[0]

        if i[1] > max_width:
            max_width = i[1]    
    return max_height * max_width


sizes = [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]]
result = solution(sizes)
print(result)



sum의 옵션 처리

# 풀이3
solution = lambda sizes: max(sum(sizes, [])) * max(min(size) for size in sizes)    

sizes = [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]]
result = solution(sizes)
print(result)


sizes_temp = [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]]
a = sum(sizes_temp, [])
print(a) 
#[14, 4, 19, 6, 6, 16, 18, 7, 7, 11]

print(sum((["hu"],["hello"]),[]))
#['hu', 'hello']

sum의 두번째 인자로 어디서 부터 시작할지를 줄수 있다.
아무것도 주지 않았을 시 디폴트 값은 0으로

lst = [1,2,3]
sum(lst) 의 경우 0+1+2+3 이다.

이때 디폴트 값으로 어떤 값을 주냐에 따라서 새롭게 사용할 수 있다.

위의 sum(sizes_temp, [])의 경우는 []를 주어서 [] 리스트를 시작으로 그 안에 중첩리스트에 있는 값들을 하나씩 더해주는 것을 구현한것이다.

sum((["hu"],["hello"]),[])의 경우는 순회가능한 객체로
(["hu"],["hello"])를 주어졌고 하나씩 꺼내서 [] 빈리스트에 +를 해주는 것이다.

0개의 댓글