본문 바로가기
프로그래머스

스티커 모으기 C++

by paysmile 2022. 3. 19.

https://programmers.co.kr/learn/courses/30/lessons/12971

 

코딩테스트 연습 - 스티커 모으기(2)

N개의 스티커가 원형으로 연결되어 있습니다. 다음 그림은 N = 8인 경우의 예시입니다. 원형으로 연결된 스티커에서 몇 장의 스티커를 뜯어내어 뜯어낸 스티커에 적힌 숫자의 합이 최대가 되도록

programmers.co.kr

 

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<int> sticker)
{
	int answer = 0;
	int dp[100001];
	
	if (sticker.size() == 1) return sticker[0];

	dp[0] = sticker[0];
	dp[1] = sticker[0];
	for (int i = 2; i < sticker.size()-1; i++) {
		dp[i] = max(dp[i - 1], dp[i - 2] + sticker[i]);
		answer = max(answer, dp[i]);
	}
	
	dp[0] = 0;
	dp[1] = sticker[1];
	for (int i = 2; i < sticker.size(); i++) {
		dp[i] = max(dp[i - 1], dp[i - 2] + sticker[i]);
		answer = max(answer, dp[i]);
	}

	return answer;
}

'프로그래머스' 카테고리의 다른 글

방의 개수 C++  (0) 2022.03.21
지형 이동 C++  (0) 2022.03.21
가장 긴 팰린드롬 C++  (0) 2022.03.19
가장 긴 팰린드롬 C++  (0) 2022.03.18
숫자 게임 C++  (0) 2022.03.18