rladudrb1200   2년 전

저는 접근 방식을 d[n][j] 에서 j를 마시고 안마시고로 구분하여 문제를 풀었습니다.

마셨다면 0으로 안마셨다면 1로 두고 했습니다.

그리고 각 잔의 점수도 a[n][j] 로 두고 마시고 안마시고로 구분하였습니다.

그래서 n-2, n-1, n의 순서로

x o o -> d[n-2][1] + a[n-1][0] + a[n];

x x o -> d[n-2][1] + a[n-1][1] + a[n];

o x o -> d[n-2][0] + a[n-1][1] + a[n];

o o o -> 조건 위배

위의 식에서 최대값을 구하여 d[n][0] 에 저장하고

o o x -> d[n-2][0] + a[n-1][0];

x o x -> d[n-2][1] + a[n-1][0];

o x x -> d[n-2][0] + a[n-1][1];

x x x -> d[n-2][1] + a[n-1][1];

위의 식에서 최대값을 구하여 d[n][1] 에 저장하고

최종적으로 d[n][0] 값과 d[n][1]의 값 중에 최대값을 리턴하도록 했습니다.

근데 문제 예시처럼 입력하면 33이 아닌 38이 나오더군요..

어느 부분이 틀린건가요..? 

아니면 제가 접근을 잘 못 한건가요..?

고수님들 부탁드립니다..

rudvy9   2년 전

3가지로 분류해서 푸는게 가장 현명해요

0 -안먹 을때

1- 연속 한개

2- 연속 두개

댓글을 작성하려면 로그인해야 합니다.