문제링크
Maximum Points You Can Obtain from Cards - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
영어 실력이 안좋아서 리트코드는 문제를 이해하는 것이 제일 힘들다..
앞에서부터 cardsPoints의 k개를 더한 값과
앞에서부터 cardsPoints의 k-1개를 더한 값 + 뒤에서부터 cardsPoints의 1개를 더한값
앞에서부터 cardsPoints의 k-2개를 더한 값 + 뒤에서부터 cardsPoints의 2개를 더한값...
이렇게 계속 비교해서 가장 큰 값을 찾는 문제이다.
접근 방법
sliding window 방식을 사용하여
먼저 앞에서부터 k개,
앞에서부터 k-1개, 뒤에서부터 1개
...
앞에서부터 0개, 뒤에서부터 k개가 될때까지 모두 구하여 문제를 해결하였다.
(한번 구할때마다 Math.max를 사용하여 최대값을 업데이트 해줬다.)
/**
* @param {number[]} cardPoints
* @param {number} k
* @return {number}
*/
var maxScore = function (cardPoints, k) {
let sum = 0;
let maxVal = 0;
for (let i = 0; i < k; i++) {
sum += cardPoints[i];
}
maxVal = sum;
for (let i = k - 1, j = cardPoints.length - 1; i >= 0; i--, j--) {
sum = sum - cardPoints[i] + cardPoints[j];
maxVal = Math.max(sum, maxVal);
}
return maxVal;
};
'코딩테스트 > LeetCode' 카테고리의 다른 글
[LeetCode] Maximum Units On A Truck (0) | 2022.07.01 |
---|---|
[LeetCode] Minimum Deletions To Make Character Frequencies Unique (0) | 2022.06.28 |
[LeetCode] Non-decreasing Array (0) | 2022.06.25 |
[LeetCode] Valid Parentheses (0) | 2022.06.24 |
[LeetCode] 3Sum Closest (0) | 2022.06.23 |