회고
지금까지 사용한 메서드도 활용에 따라서는 새롭게 사용할 수 있다.
지금까지 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"])
를 주어졌고 하나씩 꺼내서 []
빈리스트에 +
를 해주는 것이다.