ধরুন একটি N x N গ্রিড আছে, আমরা কিছু 1 x 1 x 1 কিউব রাখি। এটা. এখন প্রতিটি মানের জন্য v =গ্রিড[i][j] গ্রিড কক্ষের (i, j) উপরে স্থাপন করা v কিউবের একটি টাওয়ারকে প্রতিনিধিত্ব করে। আমাদের ফলস্বরূপ আকারগুলির মোট পৃষ্ঠের ক্ষেত্রফল খুঁজে বের করতে হবে৷
সুতরাং, ইনপুট যদি [[1,2],[3,4]] এর মত হয়, তাহলে আউটপুট হবে 34।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- সংলগ্ন এলাকা() একটি ফাংশন সংজ্ঞায়িত করুন। এটি সারি নেবে
- এরিয়া :=0
- আমি 0 থেকে সারির আকার - 1 এর মধ্যে, কর
- যদি সারি[i] এবং সারি [i + 1] অ-শূন্য হয়, তাহলে
- ক্ষেত্রফল :=এলাকা + 2 * সর্বনিম্ন সারি[i], সারি[i+1]
- যদি সারি[i] এবং সারি [i + 1] অ-শূন্য হয়, তাহলে
- রিটার্ন এলাকা
- প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -
- z :=2* (গ্রিডের সমস্ত সারির জন্য সমষ্টি (সারিতে i মানের সমষ্টি)
- x_plus_y :=গ্রিডের সমস্ত উপাদানের যোগফল * 4
- x_adjacent :=গ্রিডের সমস্ত সারির জন্য সংলগ্ন এলাকার(সারি) সমষ্টি
- y_adjacent :=গ্রিডের সমস্ত কলামের জন্য সংলগ্ন এলাকার(সারি) সমষ্টি
- রিটার্ন z +(x_plus_y - x_adjacent - y_adjacent)
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def surfaceArea(self, grid): def adjacentArea(row): area = 0 for i in range(len(row) - 1): if row[i] and row[i + 1]: area += 2 * min(row[i], row[i+1]) return area z = sum([sum(i > 0 for i in row) for row in grid]) * 2 x_plus_y = sum([sum(row) for row in grid]) * 4 x_adjacent = sum([adjacentArea(row) for row in grid]) y_adjacent = sum([adjacentArea(row) for row in zip(*grid)]) return z + (x_plus_y - x_adjacent - y_adjacent) ob = Solution() print(ob.surfaceArea([[1,2],[3,4]]))
ইনপুট
[[1,2],[3,4]]
আউটপুট
34