โจทย์
มีอาร์เรย์ rect ที่แต่ละ元素เป็น [len_i, wid_i] สามารถตัดเป็น Square ด้าน k ได้ถ้า k <= len_i และ k <= wid_i หา maxLen = ด้าน Square ใหญ่สุดจากทุกสี่เหลี่ยม แล้วนับว่ามีกี่สี่เหลี่ยมที่ตัดได้ด้าน maxLen
ตัวอย่าง: rect = [[6,9],[4,10],[6,13],[17,6]] → ด้าน Square: [6,4,6,6] → Max = 6 → มี 3 สี่เหลี่ยม
อัลกอริธึม
- หา Min ของแต่ละสี่เหลี่ยม (ด้าน Square สูงสุดของสี่เหลี่ยมนั้น)
- หา Max ของค่า Min ทั้งหมด →
maxLen - นับจำนวนที่เท่ากับ
maxLen
โค้ด Python
def solve(rect):
m = []
for r in rect:
m.append(min(r))
return m.count(max(m))
rect = [[6,9],[4,10],[6,13],[17,6]]
print(solve(rect)) # Output: 3
Input / Output
Input: [[6,9],[4,10],[6,13],[17,6]]
Output: 3