[파이썬 코드카타]
최소직사각형
https://school.programmers.co.kr/learn/courses/30/lessons/86491
1) 어떤 문제가 있었나
다양한 크기인 모든 명함을 수납할 수 있는 가장 작은 지갑 크기를 반환하는 문제
2) 내가 시도해본 건 무엇인가
① 가로(w)와 세로(h) 중 길이가 긴 것을 기준으로 값을 리스트에 넣고,
② 길이가 짧은 것을 기준으로 또 다른 리스트에 값을 넣은 뒤,
③ 각 리스트에서 최대값을 뽑아서 곱해줌
3) 어떻게 해결했나
def solution(sizes):
w_list = []
h_list = []
for w, h in sizes:
if w >= h:
w_list.append(w)
h_list.append(h)
else:
w_list.append(h)
h_list.append(w)
return max(w_list)*max(h_list)
4) 무엇을 새롭게 알았나
- size에서 [가로, 세로] 값이 있는 리스트를 뺀 뒤, 최대값 중의 최대값 * 최소값 중에 최대값을 곱해주면 같은 결과가 나옴
- 경제적인 쿼리를 위해 for문을 한줄로 처리하는 리스트 컴프리헨션(list comprehension) 연습이 필요함
def solution(sizes):
return max(max(x) for x in sizes) * max(min(x) for x in sizes)
- sizes에서 뽑은 각 가로, 세로 길이를 크기에 따라 재할당(a, b = b, a) 후, 각 인자별 max 값을 반환하도록 설정
def solution(sizes):
row = 0
col = 0
for a, b in sizes:
if a < b:
a, b = b, a
row = max(row, a) # if절 끝나고 max값 할당 > for문 다시 돌고 반복
col = max(col, b) # if절 끝나고 max값 할당 > for문 다시 돌고 반복
return row * col
'TIL' 카테고리의 다른 글
[240320] 파이썬으로 하는 클러스터링 분석 - ① 기본 개념과 거리 계산 (0) | 2024.03.20 |
---|---|
[240319] 스파크(spark): 배경 및 기본 구조, 기능 (1) | 2024.03.19 |
[240318] 스파크(spark): 병렬/분산처리, 샘플링, 분할, Dask, 자동화 (3) | 2024.03.18 |
[240318] 파이썬: 코드카타 43 & SQL: 코드카타 149~155 (0) | 2024.03.18 |
[240315] 파이썬: 코드카타 42 & SQL: 코드카타 146~148 (0) | 2024.03.15 |