오랑우탄의 반란
프로그래머스 | 최소직사각형 (Python3) 본문
반응형
오늘도 오랑이는 문제를 풉니다.
최소직사각형
풀이 과정
왜인지 모르겠으나 문제를 복잡하게 생각해서 리스트 조작을 두번씩이나 하면서 복잡하게 풀어버렸습니다.
거대해진 코드..
def solution(sizes):
w = []
h = []
for i in range(len(sizes)):
w.append(max(sizes[i][0], sizes[i][1]))
h.append(min(sizes[i][0], sizes[i][1]))
w.sort(reverse = True)
h.sort(reverse = True)
return w[0]*h[0]
하지만 이 문제는 max 함수의 속성을 잘 이해하고 있으면 한 줄로 세상 간단하게 풀 수 있는 정말 파이썬다운 문제였습니다.
max() 함수
max는 object 와 iterable 을 인수로 가질 수 있습니다.
각각 예시로 살펴보겠습니다.
max 인수의 type 이 동일한 범위 내에서 계산이 가능합니다.
var1 = 2
var2 = 8
var3 = 5
max_val = max(var1, var2, var3)
print(max_val)
# --> 8
var1 = "apple"
var2 = "banana"
var3 = "orange"
max_val = max(var1, var2, var3)
print(max_val)
# --> orange
특수문자 < 숫자 < 대문자 < 소문자 < 한글 순으로 큰 값을 가지며 max 함수는 NULL 값을 무시합니다.
리스트를 가진 변수에 대해서도 계산이 가능하지만, 리스트를 바로 max 안에 넣는 것은 불가능합니다.
list = [2, 13, 7]
max_value = max(list)
print(max_value)
# ---> 7
string = "HelloWorld"
max_val = max(string)
print(max_val)
# ---> W
위 개념을 적용했을 때 max 안에 iterable i 를 바로 넣어도 리스트 안의 리스트에 대해 적용이 된다는 사실!
처음 코드를 간단하게 줄이면 이렇습니다.
def solution(sizes):
w = []
h = []
for i in sizes:
w.append(max(i))
h.append(min(i))
return max(w)*max(h)
max의 속성을 완벽히 이해했다면 아래와 같은 한줄코딩도 가능하겠지요?
최종 코드
def solution(sizes):
return max(max(i) for i in sizes)*max(min(j) for j in sizes)
파이썬 기본기를 탄탄하게 해야겠습니다.
오랑우탄이 영어를 하고 오랑이가 코드마스터가 되는 그날까지~
반응형
'PYTHON > 프로그래머스' 카테고리의 다른 글
프로그래머스 | 숫자 문자열과 영단어 (Python3) 리스트, 딕셔너리 (0) | 2024.07.12 |
---|---|
프로그래머스 | 시저 암호 (Python3) 리스트, ORD, CHR (2) | 2024.07.11 |
프로그래머스 | 삼총사 (Python3) (0) | 2024.07.10 |
프로그래머스 | 이상한 문자 만들기 (Python3) (1) | 2024.07.09 |
프로그래머스 | 3진법 뒤집기 - int(n, base) 10진법 변환 (Python3) (0) | 2024.07.09 |