알고리즘

[프로그래머스] 쿠키 구입 (C/C++)

Code Bomber 2021. 1. 2.

문제 링크 : programmers.co.kr/learn/courses/30/lessons/49995

 

코딩테스트 연습 - 쿠키 구입

과자를 바구니 단위로 파는 가게가 있습니다. 이 가게는 1번부터 N번까지 차례로 번호가 붙은 바구니 N개가 일렬로 나열해 놨습니다. 철수는 두 아들에게 줄 과자를 사려합니다. 첫째 아들에게는

programmers.co.kr

딱히 어려운 점은 없었고 부분합의 개념을 사용했다.

 

#include <string>
#include <vector>

using namespace std;

int sum[2001];

int solution(vector<int> cookie) {
    int answer = 0;
    int cookieSize = cookie.size();

    for(int index = 0; index < cookieSize; index++) {
        sum[index + 1] = sum[index] + cookie[index];
    }
    
    for(int i = 1; i < cookieSize; i++) {
        int firstSon = sum[i];

        for(int j = i + 1; j <= cookieSize; j++) {
            int secondSon = sum[j] - firstSon;

            if(answer >= secondSon || secondSon > firstSon) {
                continue; 
            }

            for(int k = 0; k  < i; k++) {
                if(secondSon == firstSon - sum[k]) {
                    answer = max(answer, secondSon);
                    break;
                }
            }
        }
    }
    return answer;
}

댓글