문제 링크

요약

  • 쉬운 문제

최종

  • LeetCode 3536 처럼 histogram 쓸까 했는데, 그냥 최대3개/최소2개 골라내서 풀었다.
    • 최소 2개를 골라야 하는 이유는 음수가 가능하기 때문이다.
class Solution {
public:
	int maximumProduct(vector<int>& nums) {
		array<int, 3> max_3{-1001, -1001, -1001};
		array<int, 2> min_2{1001, 1001};
 
		for (int num : nums) {
			if (max_3[0] < num) {
				max_3[2] = max_3[1];
				max_3[1] = max_3[0];
				max_3[0] = num;
			} else if (max_3[1] < num) {
				max_3[2] = max_3[1];
				max_3[1] = num;
			} else if (max_3[2] < num) {
				max_3[2] = num;
			}
 
			if (min_2[0] > num) {
				min_2[1] = min_2[0];
				min_2[0] = num;
			} else if (min_2[1] > num) {
				min_2[1] = num;
			}
		}
 
		return max(max_3[0] * max_3[1] * max_3[2], max_3[0] * min_2[0] * min_2[1]);
	}
};