삐까냥의 파도타기

Q2096. 내려가기 본문

코딩/백준 알고리즘

Q2096. 내려가기

금손형아 2019. 2. 23. 12:12

최대값과 최소값을 저장하며 내려가는 로직


import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.util.StringTokenizer;


public class Q2096 {


static long[][] dpMap;

static long[][] dpMax;

static long[][] dpMin;

public static void main(String[] args) throws Exception {

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

StringTokenizer st = new StringTokenizer(br.readLine());

int y = Integer.parseInt(st.nextToken());

dpMap = new long[y+1][3];

dpMax = new long[y+1][3];

dpMin = new long[y+1][3];

for (int i = 1; i <= y; i++) {

st = new StringTokenizer(br.readLine());

for (int j = 0; j <= 2; j++) {

dpMap[i][j] = Integer.parseInt(st.nextToken());

}

dpMax[i][0] = Math.max(dpMax[i-1][0], dpMax[i-1][1]) + dpMap[i][0];

dpMax[i][1] = Math.max(Math.max(dpMax[i-1][0], dpMax[i-1][1]), dpMax[i-1][2]) + dpMap[i][1];

dpMax[i][2] = Math.max(dpMax[i-1][1], dpMax[i-1][2]) + dpMap[i][2];

dpMin[i][0] = Math.min(dpMin[i-1][0], dpMin[i-1][1]) + dpMap[i][0];

dpMin[i][1] = Math.min(Math.min(dpMin[i-1][0], dpMin[i-1][1]), dpMin[i-1][2]) + dpMap[i][1];

dpMin[i][2] = Math.min(dpMin[i-1][1], dpMin[i-1][2]) + dpMap[i][2];

}

long maxValue = Math.max(Math.max(dpMax[y][0], dpMax[y][1]), dpMax[y][2]);

long minValue = Math.min(Math.min(dpMin[y][0], dpMin[y][1]), dpMin[y][2]);

System.out.println(maxValue + " " + minValue);

}

}


'코딩 > 백준 알고리즘' 카테고리의 다른 글

Q1699. 제곱수의 합  (0) 2019.02.23
Q1904. 01타일  (0) 2019.02.23
Q1937. 욕심쟁이 판다  (0) 2019.02.22
Q1915. 가장 큰 정사각형  (0) 2019.02.21
Q6359. 만취한 상범  (0) 2019.02.21