삐까냥의 파도타기
Q2096. 내려가기 본문
최대값과 최소값을 저장하며 내려가는 로직
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 |