[프로그래머스] 숫자게임 JAVA

AMUD·2023년 10월 22일
1

Algorithm

목록 보기
74/78

문제


문제링크

접근

  • 처음에는 전형적인 dp문제라고 생각이 들었는데, 원형이라서 마지막 인덱스 처리하는 데에 꽤 고민을 많이 했다.
  • 점화식 수준에서 분기할 수 있을 것 같아서 고민했는데, 두 경우의 따로 dp배열을 만들어서 마지막에 비교하니 해결되었다.

풀이

class Solution {
    public int solution(int sticker[]) {
        int size = sticker.length;
        if (size == 1) return sticker[0];

        int[] dp1 = new int[size];
        int[] dp2 = new int[size];

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

        return Math.max(dp1[size-2], dp2[size-1]);
    }
}
profile
210's Velog :: Ambition Makes Us Diligent

0개의 댓글