- μΈμμΈ heightλ μ«μλ‘ μ΄λ£¨μ΄μ§ λ°°μ΄μ λλ€.κ·Έλνλ‘ μκ°νλ€λ©΄ yμΆμ κ°μ΄κ³ ,
λμ΄ κ°μ κ°κ³ μμ΅λλ€.- μλμ κ·ΈλνλΌλ©΄ height λ°°μ΄μ [1, 8, 6, 2, 5, 4, 8, 3, 7] μ λλ€.
- μ κ·Έλνμ λ¬Όμ λ΄λλ€κ³ μκ°νκ³ , λ¬Όμ λ΄μ μ μλ κ°μ₯ λμ λ©΄μ μ κ°μ λ°νν΄μ£ΌμΈμ.
κ°μ
λ°°μ΄μ κΈΈμ΄λ 2μ΄μμ λλ€.
μμ μ€λ λ¬Έμ λ λ¬Έμ μ체λ₯Ό μ΄ν΄νλ κ² λΆν° ν€λ§Έλ€.
κ²°κ΅ μ΄ν΄ν κ²μ κ°μ₯ λ§μ μμ΄ λ΄κΈΈ μ μλ λ©΄μ μ λ§λ λ€κ³ μκ°νκ³ ,
κ°μ₯ λμ μμμ΄ λ μ μλλ‘ x*yμ κ°μ ꡬν΄λ΄λ κ²!
#
[1,8,6,2,5,4,8,3,7] -> 49
[35, 46, 43, 59, 59] -> 140
λ¬Έμ λΆν° μ΄ν΄κ° κ°μ§ μμμ μ€λλ νλ€μλ ν루... νν
μμ€ν κΈμμΌμΈλ° μμ΄λ κ² μ΄λ €μ΄ λ¬Έμ λ₯Ό λ΄μ΄μ£Όμ κ±°μ£ ...!!! μμ½λ...!!!!!
μ°μ , x μμκ³Ό yμμμ κ³±νμ λ, κ°μ₯ λμ λ©΄μ μ΄ λμμΌ νλ κ²!
κ·Έλ¬λκΉ yμΆμ΄ κ°μ₯ λμ μ μλ xμΆμ λλΉλ₯Ό ꡬν΄μ κ°μ₯ λμ yμΆκ³Ό κ³±νλ κ²!!!
for loop λ리면μ μ°¨λ‘μ°¨λ‘ κ³±ν΄μ λΉ λ¦¬μ€νΈμ λ΄κ³
κ·Έ μ€ κ°μ₯ ν° κ°μ λ΄λ³΄λ΄?
μ΄κ² λ§μ΄ λλ..?
def get_max_area(height):
maxs = 0
for i in range(len(height)):
for n in range(i + 1, len(height)):
volume = 0
v = n - i
if height[i] <= height[n]:
volume = height[i] * v
else:
volume = height[n] * v
if volume >= maxs:
result = maxs
return result
(μλ²½νκ² λλ μ½λλ μλμλ€κ³ νμ§λ§ μ΄ μ½λλ‘ 'ok'κ° λ¨λ κ±Έ νμΈνμ
¨λ€κ³ νλ..)
μ°μ xμΆ λλΉλ₯Ό λνκ°λ©΄μ, μ°¨λ‘λ‘ λ€μ΄μ¨ μ«μλ§νΌ λ°λ³΅νλ
κ·Έ μμμ λ yμΆμ λν κ°λ€μ κ³±ν΄κ°λ©΄μ..?
ννν....
def get_max_area(height):
l = 0
r = len(height) -1
area = 0
while l < r:
area = max(area, min(height[l],height[r]) * (r - l))
if height[l] < height[r]:
l += 1
else:
r -= 1
return area
λλ΅μ μΌλ‘ μ΄ν΄κ° κ°λ― νλ° λͺ¨λ₯΄κ² μΌλκΉ -> νλ§λλ‘ μ΄ν΄ λͺ»ν κ²!
λ΄κ° μκ°νλ λλ‘ μ°μ ꡬνμ ν΄ λ³΄κ³ , κ·Έ λ€μμ λͺ¨λΈ μ루μ μ λ€μ λ΄μΌ ν κ² κ°λ€.. π€―
λ΄κ° λͺ¨λΈ μ루μ
μ μ΄ν΄νμ§ λͺ»νλ μ£Όλ μ΄μ μ€ νλκ° max( )
, min( )
ν¨μμ λν μ΄ν΄κ° λΆμ‘±νκΈ° λλ¬ΈμΈ κ² κ°λ€.
1. Min ν¨μ
min(x)μ μΈμλ‘ λ°μ μλ£ν λ΄μμ μ΅μκ°μ μ°Ύμμ λ°ννλ ν¨μμ΄λ©°
xμλ λ°λ³΅μ΄ κ°λ₯ν λ°μ΄ν° νμ
, μ¦ iterable
ν μλ£νμ΄ λ€μ΄κ°μΌνλ€.(λ¬Έμμ΄, 리μ€νΈ, νν λ±)
min(iterable, *[, default=obj, key=func]) -> value
μ°μ λ€μ 맀κ°λ³μλ μκ°νμ§ λ§κ³ , iterable
λ§ νμΈ!
min
ν¨μλ₯Ό μ 리ν΄λ³΄μλ©΄ λ€μκ³Ό κ°λ€.
κ·Έλ λ€λ©΄ μ¬μ©λλ ν¨μμ μνμ?
def min(*args, key=None):
: *argsλ κ°λ³μΈμλ₯Ό λ»ν¨μΌλ‘ μ¬λ¬κ°μ μΈμκ° λ€μ΄κ° μ μλ€. κ·Έλ κΈ° λλ¬Έμ μλμ κ°μκ²λ κ°λ₯νλ€.
min(arg1, arg2, args, [, key=func]) -> value
리μ€νΈ Nκ°λ₯Ό λΉκ΅ν μ μλ€λ λ»!
μΆμ²: https://blockdmask.tistory.com/411 [κ°λ°μ μ§λ§μ]
# =========================================================
# min(iterable) ν¨μ μμ 1 : 리μ€νΈ μ΄μ©
a = [1, 2, 3]
print(min(a)) # λ°ν : 1
# =========================================================
# min(iterable) ν¨μ μμ 2 : λ¬Έμμ΄ μ΄μ©
b = 'BlockDMask'
print(min(b)) # λ°ν : 'B'
# =========================================================
# min(iterable) ν¨μ μμ 3 : non iterable μΈ κ²½μ°
c = 1
print(min(c)) # error : 'int' object is not iterable
# =========================================================
# min(iterable) ν¨μ μμ 4 : νν μ΄μ©
d = (6, 5, 4, 2)
print(min(d)) # λ°ν : 2
# =========================================================
# min(iterable) ν¨μ μμ 5 : 리μ€νΈ μ΄μ©2
e = [3, 4, 5, 'a', 'b', 'c']
print(min(e)) # error : str νμ
κ³Ό int νμ
μ λΉκ΅ν μ μκΈ° λλ¬Έ
# =========================================================
# min(arg1, arg2) ν¨μ μμ 1 : 리μ€νΈ
a = [1, 2, 3]
b = [4, 5, 6]
print(min(a, b)) # λ°ν : [1,2,3]
# =========================================================
# min(arg1, arg2) ν¨μ μμ 2 : λ¬Έμμ΄
c = 'BlockDMask'
d = 'BAAAlockDMask'
print(min(c, d)) # λ°ν : 'B'
# =========================================================
# min(arg1, arg2) ν¨μ μμ 3 : νμ
μ΄ λ€λ₯Έ κ²½μ°
e = [3, 2, 1]
f = ['a', 3, 2, 1]
print(min(e, f)) # error # TypeError: '<' not supported between instances of 'str' and 'int'
# =========================================================
# min(arg1, arg2, ...) ν¨μ μμ 4 : μΈμκ° N κ°
g = [2, 3, 4]
h = [2, 2, 2, 2, 2]
i = [9, 8, 7, 6, 5]
j = [1]
k = [0]
print(min(g, h, i, j, k)) # λ°ν : [0]
2. Max ν¨μ
min ν¨μμ λκ°μ΄ iterable λ°μ΄ν° νμ μ μΈμλ‘ λ°μμ κ·Έμ€ κ°μ₯ κ°μ΄ ν° κ²μ λ°ννλ ν¨μμ΄λ©°, 맀κ°λ³μλ₯Ό μ¬λ¬κ° λ°λ ννλ μ‘΄μ¬ν©λλ€.
maxν¨μμ κΈ°λ³Έν
max(iterable, *[, default=obj, key=func]) -> value
max(arg1, arg2, args, [, key=func]) -> value
# =========================================================
# max(iterable) ν¨μ μμ 1 : 리μ€νΈ μ΄μ©
a = [4, 3, 2, 1, 9]
print(max(a)) # λ°ν : 9
# =========================================================
# max(iterable) ν¨μ μμ 2 : λ¬Έμμ΄ μ΄μ©
b = 'BlockDMask'
print(max(b)) # λ°ν : 's'
# =========================================================
# max(iterable) ν¨μ μμ 3 : νν μ΄μ©
d = (6, 5, 4, 2, 999, 1000, 0)
print(max(d)) # λ°ν : 1000
# =========================================================
# max(arg1, arg2) ν¨μ μμ 1 : 리μ€νΈ
a = [1, 2, 3]
b = [4, 5, 6]
print(max(a, b)) # λ°ν : [1,2,3]
# =========================================================
# max(arg1, arg2) ν¨μ μμ 2 : λ¬Έμμ΄
c = 'BlockDMask'
d = 'Blog'
print(max(c, d)) # λ°ν : 'Blog'
# =========================================================
# max(arg1, arg2, ...) ν¨μ μμ 4 : μΈμκ° M κ°
e1 = [2, 3, 4]
e2 = [2, 2, 2, 2, 2]
e3 = [9, 8, 7, 6, 5]
e4 = [1]
e5 = [0]
print(max(e1, e2, e3, e4, e5)) # λ°ν : [9, 8, 7, 6, 5]