[프로그래머스 Lv.3] Summer/Winter Coding(~2018) - 스티커 모으기(2)

김민지·2023년 8월 17일
0

✨ 문제 ✨

✨ 정답 ✨

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

💡💡 기억해야 할 점 💡💡

  1. 스티커 사용 여부를 체크하는 배열을 만들어서 하려고 했으나 Math.max를 사용하는 이상 사용 여부를 체크하는 것이 여간 까다로운 일이 아니라는 걸 깨달았다.
  2. dp 배열을 두 개 이상 만들어서 푸는 방법이 있다는 것을 알게 되었다.
profile
이건 대체 어떻게 만든 거지?

0개의 댓글

관련 채용 정보