:: ADVANCE ::

[BaekJoon][2531] 회전 초밥 본문

Algorithm/DP (동적계획법)

[BaekJoon][2531] 회전 초밥

KSJ14 2016. 6. 25. 04:05
반응형

BAEKJOON ONLINE JUDGE


2531 회전 초밥


https://www.acmicpc.net/problem/2531



연속해서 먹을 수 있는 접시가 k 개 이기 때문에 회전(순환)의 경우 배열을 추가로 k개 더 선언하여 뒤에 더 입력하였다.

dp로 문제를 풀었다.


dp[마지막으로 먹은 초밥의 index] = index의 초밥을 마지막으로 먹었을 경우 최대로 먹은 초밥의 가짓 수


k개 안에 중복되는 초밥번호가 있을 경우 더이상 수를 세면 안되기 때문에 이를 처리해야 한다.

초밥의 접시 여부를 판단하는 배열을 선언하여 i 번째 초밥을 추가하면 i - k의 초밥을 빼 준다.


또한 연속으로 초밥을 먹으면서 쿠폰 번호와 동일한 초밥을 먹을 수 있으므로 이를 판단하여야 한다.

dp를 채워나갈 때 같이 계산을 하면 된다.

하지만, 문제를 풀다보니 일단은 따로 계산을 하였다. (문제를 잘못 읽어서 많이 틀렸다!ㅠㅠ)


최종적으로, dp - 쿠폰의 여부 + 쿠폰 이벤트(1) 을 한 결과 중 최대값을 출력하면 된다.



반응형

'Algorithm > DP (동적계획법)' 카테고리의 다른 글

[BaekJoon][2159] 케익 배달  (0) 2016.07.04
[BaekJoon][1328] 고층 빌딩  (0) 2016.07.04
[BaekJoon][7579] 앱  (0) 2016.06.25
[BaekJoon][1915] 가장 큰 정사각형  (0) 2016.06.07
[BaekJoon][9095] 1, 2, 3 더하기  (0) 2016.04.11
Comments