BOJ_S1_9465
๐ [S1_9465] ๊ณฑ์
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static StringTokenizer st;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// testcase
int T = Integer.parseInt(br.readLine());
for (int tc = 0; tc < T; tc++) {
int n = Integer.parseInt(br.readLine());
int[][] arr = new int[2][n+1];
// ๋ฐฐ์ด ์
๋ ฅ
for (int i = 0; i < 2; i++) {
st = new StringTokenizer(br.readLine(), " ");
for (int j = 1; j < n + 1; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
// dp ๋ฐฐ์ด ์ด๊ธฐํ
int[][] dp = new int[2][n + 1];
// ์ ์ผ ์ฒ์์ ์๋ ๊ฐ ์ค์
dp[0][1] = arr[0][1];
dp[1][1] = arr[1][1];
// ๋ณธ์ธ๋ณด๋ค ๋ ์์ 2๊ฐ์ด๋ ๋น๊ตํ๊ธฐ ๋๋ฌธ์ 2๋ถํฐ ์์
for (int j = 2; j < n + 1; j++) {
// ์์ ์ค
dp[0][j] = Math.max(dp[1][j-1], dp[1][j-2]) + arr[0][j];
// ์๋์ค
dp[1][j] = Math.max(dp[0][j-1], dp[0][j-2]) + arr[1][j];
}
sb.append(Math.max(dp[0][n],dp[1][n])).append("\n");
}
System.out.println(sb);
}
}
๐ค ๋์ ์๊ฐ
dp ๋ฌธ์ ์ด๋ค.
๋ณธ์ธ ๊ฐ์ ๋ค๋ฅธ ํ์ ์กด์ฌํ๋ ์ ๊ฐ๊ณผ ์ ์์ ๊ฐ์ ๋น๊ตํ์ฌ ๋ ํฐ ๊ฐ(dp ๋ฐฐ์ด)๊ณผ ์๊ธฐ ๊ฐ(arr ๋ฐฐ์ด)์ ๋ํด์ dp ๋ฐฐ์ด์ ๋ฃ์ด์ค๋ค.
๊ทธ๋์ ๋ง์ง๋ง์ ์ ์ผ ํฐ ๊ฐ์ ์ถ๋ ฅํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ณธ์ธ๋ณด๋ค 2๊ฐ ๋ ์ ์ ๊ฐ๋ถํฐ ๋น๊ตํ๊ธฐ ๋๋ฌธ์ ์ด ๊ฐ์ 0๋ถํฐ ์์์ด ์๋ 1๋ถํฐ ์์์ ํด์ฃผ์๋ค.
์ด๊ฒ์ ๊ทธ๋ฆผ์ผ๋ก ๋ณด์ฌ์ฃผ๋๊ฒ ๋ ์ดํด๊ฐ ๋น ๋ฅผ ๊ฒ ๊ฐ์ ๊ทธ๋ฆผ์ ์ค๋นํ๋ค.
์ฒ์ [0][1] ๊ณผ [1][1] ์ ๋ณธ๋ ๋ฐฐ์ด ๊ฐ์ด ๋ค์ด๊ฐ๊ณ ๋ค์๋ถํฐ๋ ๋ณธ์ธ ์ ์ 2๊ฐ์ ๊ฐ์ ๋น๊ตํ์ฌ ๋ ํฐ ๊ฐ ( dp ๋ฐฐ์ด ๊ฐ )๊ณผ ๋ณธ์ธ ๊ฐ ( arr ๋ฐฐ์ด ๊ฐ )์ ๋ํด์ dp ๋ฐฐ์ด์ ์ ์ฅํ๋ค.