https://school.programmers.co.kr/learn/courses/30/lessons/12971
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
생각해 보기
- 최대값을 찾아야 하므로 dp로 진행을 하자.
- 현재 스티커가 들어간다는 가정하에 dp[i] = max(dp[i-2]+sticker[i], dp[i-1])가 성립한다.
- 맨 처음 스티커가 들어가는 경우 dp[i][0] 안들어 가는 경우 dp[i][1]로 진행하자.(맨 뒷 부분이 들어가면 안되기에 구분을 한다.)
코드
#include <vector>
#include <algorithm>
using namespace std;
int dp[100001][2];
int solution(vector<int> sticker)
{
int answer = 0;
if(sticker.size() == 1)
return sticker[0];
dp[0][0] = sticker[0];
dp[1][0] = sticker[0];
dp[1][1] = sticker[1];
for(int i=2;i<sticker.size();++i){
dp[i][1] = max(dp[i-2][1]+sticker[i],dp[i-1][1]);
if(i < sticker.size()-1)
dp[i][0] = max(dp[i-2][0]+sticker[i],dp[i-1][0]);
}
answer = max(dp[sticker.size()-2][0],dp[sticker.size()-1][1]);
return answer;
}

728x90
'알고리즘 > 프로그래머스 문제' 카테고리의 다른 글
| [Level 3] - 자물쇠와 열쇠 (0) | 2023.07.10 |
|---|---|
| [ALGORITHM] LEVEL3 2021 카카오 채용연계형 인턴십 - 표 편집 (0) | 2023.01.06 |
| [ALGORITHM] LEVEL4 2021 카카오 채용연계형 인턴십 - 미로 탈출 (0) | 2023.01.04 |
| [ALGORITHM] LEVEL3 2022 KAKAO BLIND RECRUITMENT - 양과 늑대 (0) | 2022.12.30 |
| [ALGORITHM] LEVEL3 2022 KAKAO BLIND RECRUITMENT - 파괴되지 않은 건물 (0) | 2022.12.28 |
댓글