728x90
def solution(sizes):
w, h = 0, 0
for s in sizes:
w1, h1 = max(w, s[0]), max(h, s[1])
w2, h2 = max(w, s[1]), max(h, s[0])
if (w1+h1 <= w2+h2):
w, h = w1, h1
else:
w, h = w2, h2
return w*h
<내 풀이 분석>
1. sizes의 값으로 case1(w1)과 case2(w2)를 만든 후, w+h가 최소가 되는 case로 w, h를 갱신시킨다.
2. 최종 w, h값의 곱을 반환한다.
+) 더 좋은 아이디어
def solution(sizes):
maxSizes = [max(x) for x in sizes]
minSizes = [min(x) for x in sizes]
return max(maxSizes) * max(minSizes)
def solution(sizes):
return max(max(x) for x in sizes) * max(min(x) for x in sizes)
1. sizes의 (길이1, 길이2)쌍 중 큰 값을 리스트로 모으고, 작은 값도 리스트로 모은다.
2. 큰 값 리스트에서 가장 큰 값, 작은 값 리스트에서 가장 큰 값을 구한다
3. 곱을 반환한다.
728x90
'알고리즘 > programmers[1]' 카테고리의 다른 글
[프로그래머스] 나머지가 1이 되는 수 찾기: python3 (0) | 2022.01.22 |
---|---|
[프로그래머스] 최소직사각형 다른 풀이 (0) | 2022.01.22 |
[프로그래머스] 2016년: python3 (0) | 2022.01.21 |
[프로그래머스] 두 개 뽑아서 더하기: python3 (0) | 2022.01.21 |
[프로그래머스] 예산: python3 (0) | 2022.01.21 |