ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 9465번 : 스티커
    알고리즘/백준(acmicpc.net) 문제풀이 2018. 6. 6. 14:18
    반응형

    까다롭게 보이지만, 실제로는 전혀 까다롭지 않다.

    행은 2행으로 고정되어있고 열이 유동적이니 1열부터 n열까지 dp를 채워나가면 될 것 같다.

    각 열마나 선택지가 총 3개가 있다. 아무것도 선택하지 않거나, 1행을 선택하거나 2행을 선택하는 것이다.


    i번째 열에서 아무것도 선택하지 않을 때 dp에는 dp[i][0]으로 들어간다.

    1행을 선택하면 dp[i][1], 2행을 선택하면 dp[i][2]로 들어간다.


    편의상 MAX(a, b)는 a와 b중 더 큰값을 반환하고, MAX3(a, b, c)는 a, b, c 중 제일 큰값을 반환한다.

    1) 아무것도 선택하지 않을 때 그 이전 열까지 합이 최대가 되는 dp의 값을 그대로 갖는다.

    ex)dp[3][0]=MAX3(dp[2][0], dp[2][1]. dp[2][2])가 된다.

    2) 1행을 선택했을 때는 이전 열에서 아무것도 선택하지 않았을 때와 2번째 행을 선택했을 경우 두가지 중 하나를 갖는다.

    ex)dp[3][1]=MAX(dp[2][0], dp[2][2]);

    3) 2행을 선택했을 때는 이전 열에서 아무것도 선택하지 않았을 때와 1번째 행을 선택했을 경우 두가지 중 하나를 갖는다.

         ex)dp[3][2]=MAX(dp[2][0]. dp[2][1]);


    마지막으로 값을 출력할 때는 dp[N][0], dp[N][1], dp[N][2] 중 가장 큰 하나를 골라주면 된다.



    반응형

    '알고리즘 > 백준(acmicpc.net) 문제풀이' 카테고리의 다른 글

    2294번 : 동전2  (0) 2018.06.07
    2167번 : 2차원 배열의 합  (0) 2018.06.06
    2163번 : 초콜릿 자르기  (0) 2018.06.05
    1010번 : 다리 놓기  (0) 2018.06.05
    2156번 : 포도주 시식  (0) 2018.06.04

    댓글

Designed by Tistory.