삐까냥의 파도타기
Q9465. 스티커 본문
최대 값을 저장하며 나아가는 로직.
array[0][2] 가 선택할 수 있는 스티커의 위치는 array[1][0]와 array[1][1]이며, 두 스티커를 선택할 경우의 저장된 최대값을 선택한다.
array[1][2] 가 선택할 수 있는 스티커의 위치는 array[0][0]와 array[0][1]이며, 두 스티커를 선택할 경우의 저장된 최대값을 선택한다.
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Q9465 { static int[][] array; static int[][] values; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine());
int testCase = Integer.valueOf(st.nextToken()); for (int t = 1; t <= testCase; t++) { st = new StringTokenizer(br.readLine());
int num = Integer.valueOf(st.nextToken()); array = new int[2][num+1]; values = new int[2][num+1];
for (int i = 0; i < 2; i++) { st = new StringTokenizer(br.readLine()); for (int j = 1; j <= num; j++) { array[i][j] = Integer.valueOf(st.nextToken()); } }
values[0][1] = array[0][1]; values[1][1] = array[1][1];
for (int i = 2; i <= num; i++) { values[0][i] = values[1][i-2] > values[1][i-1] ? values[1][i-2] : values[1][i-1]; values[0][i] += array[0][i];
values[1][i] = values[0][i-2] > values[0][i-1] ? values[0][i-2] : values[0][i-1]; values[1][i] += array[1][i]; }
System.out.println(values[0][num] > values[1][num] ? values[0][num] : values[1][num]); } } } |
'코딩 > 백준 알고리즘' 카테고리의 다른 글
Q11057. 오르막 수 (0) | 2019.02.10 |
---|---|
Q9461. 파도반 수열 (0) | 2019.02.10 |
Q2163. 초콜릿 자르기 (0) | 2019.02.10 |
Q1010. 다리놓기 (0) | 2019.02.10 |
Q11053. 가장 긴 증가하는 부분 수열 (0) | 2019.02.10 |