티스토리 뷰
DP를 이용하여 해결이 가능하다.
한행만 선택이 가능하므로 행마다 따로 선택할 수 있는 최대값을 계산하여 그 값을 이용하여 따로 최대값을 계산해 준다.
하나를 선택하면 다음을 걸러서 선택할 수 있으므로 점화식은 다음과 같다.
dp[i] = Math.max(dp[i - 2] + dp[i], dp[i - 1])
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Scanner; | |
/** | |
* 백준, 5721, 사탕줍기 | |
* | |
* @author whitebeard-k | |
* | |
*/ | |
public class Problem5721 { | |
static int M; | |
static int N; | |
static int[] nums; | |
static int[] dp; | |
public static void main(String[] args) { | |
Scanner sc = new Scanner(System.in); | |
while (true) { | |
M = sc.nextInt(); | |
N = sc.nextInt(); | |
if (M == 0 && N == 0) | |
break; | |
dp = new int[M + 1]; | |
for (int i = 1; i <= M; i++) { | |
nums = new int[N + 1]; | |
// y축에 대한 선택 | |
for (int j = 1; j <= N; j++) { | |
nums[j] = sc.nextInt(); | |
if (j >= 2) { | |
// j-2에 대한 값의 선택과, j-1에 대한 값의 선택중 큰 값을 저장 | |
nums[j] = Math.max(nums[j - 2] + nums[j], nums[j - 1]); | |
} | |
} | |
dp[i] = nums[N]; | |
// x축에 대한 선택 | |
if (i >= 2) { | |
// y축의 최대값 중 i-2의 값의 선택과 i-1의 값의 선택을 저장 | |
dp[i] = Math.max(dp[i - 2] + dp[i], dp[i - 1]); | |
} | |
} | |
System.out.println(dp[M]); | |
} | |
sc.close(); | |
} | |
} |
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1991 트리순회 (0) | 2018.01.13 |
---|---|
[백준][DP] 1149 RGB 거리 (0) | 2017.11.15 |
[백준] 1504 특정한 최단 경로 (0) | 2017.10.25 |
[백준][DP] 1463 1로 만들기 (0) | 2017.10.25 |
[백준][세그먼트 트리] 1275 커피숍2 (0) | 2017.10.25 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- HIVE
- nodejs
- bash
- AWS
- 하둡
- error
- 알고리즘
- airflow
- ubuntu
- hbase
- 하이브
- emr
- Python
- oozie
- 다이나믹
- Linux
- Hadoop
- SPARK
- S3
- 오류
- SQL
- java
- 정올
- mysql
- Tez
- yarn
- HDFS
- build
- 파이썬
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함