BOJ_2342_Dance Dance Revolution_java
2023. 2. 10. 19:05ㆍAlgorithm/BOJ
728x90
https://www.acmicpc.net/problem/2342
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
/**
백준 2342번 Dance Dance Revolution
골드 3
*/
public class BOJ_2342_DanceDanceRevolution {
static final int INF = 987654321;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// input :
// 1
// 2 0 4
// 3
int[] arr = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int[] input = new int[arr.length];
input[0] = 0;
for (int i = 0; i<arr.length-1; i++){ // 마지막 0 제거
input[i+1] = arr[i];
}
solution(input);
}
public static void solution(int[] input){
int inputLength = input.length;
int[][][] dp = new int[inputLength][5][5]; // idx, left, right
for (int i = 0; i<inputLength; i++){ // 초기화
for (int j = 0; j<5; j++){
for (int k = 0; k<5; k++){
dp[i][j][k] = INF;
}
}
}
dp[0][0][0] = 0;
for (int idx = 0; idx < inputLength-1; idx++){
int next = input[idx + 1]; // 다음 ddr
for (int i = 0; i<5; i++){ //left
for (int j = 0; j<5; j++){ //right
int now = dp[idx][i][j]; // 현재 발판 정보
if (next != j){ // 해당 위치에 이미 발이 있는 경우 이동 불가
// 왼발 이동
dp[idx+1][next][j] = Math.min(dp[idx+1][next][j], now + moveCost(i, next));
}
if (next != i){ // 해당 위치에 이미 발이 있는 경우 이동 불가
// 오른발 이동
dp[idx+1][i][next] = Math.min(dp[idx+1][i][next], now + moveCost(j, next));
}
}
}
}
int ans = Integer.MAX_VALUE;
for (int i = 0; i<5; i++){
for (int j = 0; j<5; j++){
ans = Math.min(ans, dp[inputLength-1][i][j]);
}
}
System.out.println(ans);
}
public static int moveCost(int from, int to){
if (from == to){
return 1;
}else if (from == 0){
return 2;
}else if(Math.abs(from - to) == 2 ){
return 4;
}
return 3;
}
}
'Algorithm > BOJ' 카테고리의 다른 글
BOJ_16724_피리 부는 사나이_java (0) | 2023.02.13 |
---|---|
BOJ_9466_텀 프로젝트_java (0) | 2023.02.13 |
BOJ_7579_앱_java (0) | 2023.02.09 |
BOJ_4386_별자리 만들기_java (0) | 2023.02.08 |
BOJ_2473_세 용액_java (0) | 2023.02.07 |