coding test - C++/기본기문제

[C++] 스티커문제 - dp

sillon 2026. 10. 3. 19:17
728x90
반응형

    //스티커가 1개일때 
    // dp문제는 1개 / 2개 일때 먼저 출력할 수 있으면 출력하자

#include <iostream>
#include <vector>
using namespace std;

int solution(vector<int> sticker)
{
    int answer =0;
    int n = sticker.size();
    vector<int> dp1(n,0);
    vector<int> dp2(n,0);
    
    // dp1 14부터 
    for (int i = 1; i < n; i ++){
        dp1[i] = sticker[i-1];
    }
    for (int i = 1; i < n; i ++){
        dp2[i] = sticker[i];
    }
    
    for(int i = 2; i < dp1.size(); i++){

        dp1[i] = max(dp1[i-1],dp1[i-2] + dp1[i]);
    }
    
    for(int i = 2; i < dp2.size(); i++){
        dp2[i] = max(dp2[i-1],dp2[i-2] + dp2[i]);
    }
    answer = max(dp1[dp1.size()-1],dp2[dp2.size()-1]);
    
    //스티커가 1개일때 
    // dp문제는 1개 / 2개 일때 먼저 출력할 수 있으면 출력하자

    if (n == 1){
        return sticker[0];
    }
    return answer;
}

 

로직 참고

https://sillon-coding.tistory.com/424

 

Programmers / 스티커 모으기(2) / Python 파이썬

*문제 출처는 프로그래머스에 있습니다. 문제 제목: 스티커 모으기(2) (3단계) - 동적 계획법 문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/12971#qna 프로그래머스 코드 중심의 개발자 채

sillon-coding.tistory.com

 

728x90
반응형