본문 바로가기
algorithm

1423. maximum points you can obtain from cards

by 보노보노야~ 2021. 7. 12.

https://leetcode.com/problems/maximum-points-you-can-obtain-from-cards/

 

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

문제 조건 및 풀이

배열의 양 끝 숫자 중 하나를 포함하는 길이 k의 연속된 부분 배열 중 그 합이 최대가 되는 부분 배열을 찾는 문제.

배열의 길이가 N이라고 할 때, N - k에서부터 k개 요소의 합을 구한 다음, 가장 왼쪽 요소를 빼고 오른쪽 요소를 하나 추가하는 방식으로 k개의 합을 유지하면서 최댓값을 지속적으로 갱신해 나간다.

코드

class Solution {
public:
    int maxScore(vector<int>& cardPoints, int k) {
        int N = cardPoints.size();
        
        int ret = 0;
        int answer = 0;
        for (int i = N - k ; i < N ; i++) {
            ret += cardPoints[i];
        }
        answer = ret;
        
        for (int i = N - k + 1 ; i <= N; i++) {
            ret -= cardPoints[(i - 1) % N];
            ret += cardPoints[(i + k - 1) % N];
            answer = max(answer, ret);
        }
        
        return answer;
    }
};

'algorithm' 카테고리의 다른 글

221. Maximal Square  (0) 2021.07.13
[BOJ 17822] 원판 돌리기(C++)  (0) 2019.12.02
[BOJ 15686] 치킨 배달  (0) 2019.04.13
[BOJ 16236] 아기 상어  (0) 2019.04.09
[BOJ14889] 스타트와 링크  (0) 2019.03.28

댓글