- λ κ°μ ν¬μΈν°
s
, e
λ₯Ό μ¬μ©νμ¬ νμ¬μ μ΅μκ° minVal
μ΄ μ μ§λλ λ²μλ₯Ό μ°Ύμμ κ²°κ³Όκ°μ κ³μ°νλ€.
- κΈ°λ³Έμ μΈ μμ΄λμ΄λ λΉμ·νκ² μ κ·Όνμ§λ§ λ²μλ₯Ό νμ₯νλ λ°©μμ λΆνμνκ² μ΄λ ΅κ² ꡬννλ κ²μ΄ μκ° μ΄κ³Όλ‘ μ΄μ΄μ‘λ€.
- μ ννκ² νμ¬μ μ΅μκ°
minVal
μ΄ μ μ§λλ λ²μλ₯Ό μ°Ύκ³ , λ€μ iterationμμ νμ¬ λ²μμ μμμ -1, λ€μμ +1 μμΉ κ°κ°μ λ°λ‘ νμνλ λ°©μμΌλ‘ ꡬννμλ€. - μ΄λ κ² νλ©΄ κ²½μ°μ μκ° κΈ°νκΈμμ μΌλ‘ μ¦κ°ν μ μκΈ° λλ¬Έμ λ¬Έμ κ° λλ€.
- λ²μλ₯Ό μ μ°¨ νμ₯νλ νμ¬ λ²μμ μμμ -1, λ€μμ +1 μμΉμ μ«μ μ€ ν° κ°μ κΈ°μ€μΌλ‘ λ²μλ₯Ό νμ₯νλ€.
- λ μ€ ν° κ°μ μ νν μλ‘ νμ¬ μ΅μκ° λ³΄λ€ ν¬κ±°λ κ°μ κ°μ μ νν νλ₯ μ΄ λκΈ° λλ¬Έμ΄λ€.
class Solution {
public:
int maximumScore(vector<int>& nums, int k) {
int s = k, e = k, N = nums.size();
int minVal = nums[k];
int result = nums[k];
while (s > 0 || e < N - 1) {
if (s == 0 || (e < N - 1 && nums[e + 1] > nums[s - 1]))
++e;
else
--s;
minVal = min(minVal, min(nums[s], nums[e]));
result = max(result, minVal * (e - s + 1));
}
return result;
}
};