Notice
250x250
Recent Posts
Recent Comments
Link
넘치게 채우기
[LeetCode] 1014. Best Sightseeing Pair 본문
728x90
반응형
https://leetcode.com/problems/best-sightseeing-pair/description/
leetcode - Best Sightseeing Pair
문제 유형: 그리디, 다이나믹 프로그래밍
문제 난이도: Medium
문제
You are given an integer array values where values[i] represents the value of the ith sightseeing spot. Two sightseeing spots i and j have a distance j - i between them.
The score of a pair (i < j) of sightseeing spots is values[i] + values[j] + i - j: the sum of the values of the sightseeing spots, minus the distance between them.
Return the maximum score of a pair of sightseeing spots.
두 위치의 경치 점수는 두 value의 합에 거리를 뺀 값이다.
가장 큰 경치 점수를 구하시오.
풀이
각 j에서의 가장 큰 i를 찾아서 최대값을 구해 업데이트 하면 된다.
values[i] + values[j] + i - j를 values[i] + i와 values[j] - j 두 부분으로 나누면, 구하기 쉬워질 것이다.
i에 대한 쌍은 j보다 작은 인덱스에서 가장 큰 i를 구하면 되고, j는 한 칸씩 밀면서 구해보면 된다.
코드
C++
class Solution {
public:
int maxScoreSightseeingPair(vector<int>& values) {
int n = values.size();
vector<int> lefts(n);
lefts[0] = values[0];
int ans = 0;
for(int i = 1; i < n; ++i) {
int currRight = values[i] - i;
ans = max(ans, lefts[i-1] + currRight);
lefts[i] = max(lefts[i-1], values[i] + i);
}
return ans;
}
};
728x90
반응형
'PS > LeetCode' 카테고리의 다른 글
[LeetCode] 1639. Number of Ways to Form a Target String Given a Dictionary (0) | 2024.12.29 |
---|---|
[LeetCode] 689. Maximum Sum of 3 Non-Overlapping Subarrays (0) | 2024.12.28 |
[LeetCode] 494. Target Sum (0) | 2024.12.26 |
[LeetCode] 3203. Find Minimum Diameter After Merging Two Trees (0) | 2024.12.24 |
[LeetCode] 2471. Minimum Number of Operations to Sort a Binary Tree by Level (0) | 2024.12.23 |