✨ 문제 ✨

✨ 정답 ✨
function solution(sticker) {
const length = sticker.length;
const dp1 = Array(length).fill(0);
const dp2 = Array(length).fill(0);
dp1[0] = sticker[0];
dp1[1] = sticker[0];
dp2[1] = sticker[1];
for(let i = 2; i < length; i++){
if(i !== length - 1){
dp1[i] = Math.max(dp1[i - 1], dp1[i - 2] + sticker[i]);
} else{
dp1[i] = dp1[i - 1];
}
dp2[i] = Math.max(dp2[i - 1], dp2[i - 2] + sticker[i]);
}
return Math.max(dp1[length - 1], dp2[length - 1]);
}
🧵 참고한 정답지 🧵
https://velog.io/@longroadhome/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-LV.3-%EC%8A%A4%ED%8B%B0%EC%BB%A4-%EB%AA%A8%EC%9C%BC%EA%B8%B0-JS
💡💡 기억해야 할 점 💡💡
- 스티커 사용 여부를 체크하는 배열을 만들어서 하려고 했으나 Math.max를 사용하는 이상 사용 여부를 체크하는 것이 여간 까다로운 일이 아니라는 걸 깨달았다.
- dp 배열을 두 개 이상 만들어서 푸는 방법이 있다는 것을 알게 되었다.