티스토리 뷰
문제 링크입니다 : programmers.co.kr/learn/courses/30/lessons/12971?language=cpp
코딩테스트 연습 - 스티커 모으기(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 len = sticker.size();
vector<int> cache(len, 0);
if(len == 1) return sticker[0];
else if(len == 2) return max(sticker[0], sticker[1]);
else {
cache[1] = sticker[1];
for(int i = 2; i < len; i++) {
cache[i] = max(cache[i - 1], cache[i - 2] + sticker[i]);
}
cache[0] = sticker[0];
cache[1] = sticker[0];
for(int i = 2; i < len - 1; i++) {
cache[i] = max(cache[i - 1], cache[i - 2] + sticker[i]);
}
answer = max(cache[len - 1], cache[len - 2]);
}
return answer;
}

개발 환경 : vscode
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 기지국 설치 (0) | 2020.09.06 |
---|---|
프로그래머스 - 소수 만들기 (0) | 2020.09.06 |
프로그래머스 - 배달 (0) | 2020.09.06 |
프로그래머스 - 방문 길이 (0) | 2020.09.02 |
프로그래머스 - 찾아라 프로그래밍 마에스터 게임 맵 최단거리 (0) | 2020.09.02 |