dp๋ก ํธ๋ ๋ฌธ์ .
์๊ฒ๋ ์
์ ํ์์ ์ธ์ธ ๋ arr[r][c]๋ฅผ ํฌํจํ๋ ๊ฒฝ์ฐ์ ํฌํจํ์ง ์๋ ๊ฒฝ์ฐ๋ง ์๊ฐํ์ง ๋ง์
์ด๋ฒ ๋ฌธ์ ๋ arr[r][c]๋ฅผ ๋ฝ์ ์ ์๋ ์ด์ ์์น๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ค!
dp๋ ์ต์ ํด์ ๋ถ๋ถ์ต์ ํด๋ฅผ ์๊ฐํ๋ฉฐ ์ ํ์์ ์ธ์์ผ ํ๋ค.
์ฒ์ ์ ๊ทผ๋ฐฉ์
arr[r][c] ์ ์คํฐ์ปค๋ฅผ ๋ผ๋ ๊ฒฝ์ฐ์ ๋ผ์ง ์๋ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํด์ ์ ํ์์ ์ธ์ฐ๋ ค๊ณ ํ๋ค.
์ฌ๋ฐ๋ฅธ ์ ๊ทผ๋ฐฉ์
arr[r][c]์ ์คํฐ์ปค๋ฅผ ๋ ์ ์๋ ๊ฒฝ์ฐ๋ง ๊ณ ๋ คํ๊ณ , arr[r][c] ์คํฐ์ปค๋ฅผ ๋ ์ ์๋ ์ด์ ์์น (arr[1][c-1] or arr[1][c-2] ํน์ arr[0][c-1] or arr[0][c-2]) ๋ฅผ ๋ถ๋ถ์ต์ ํด๋ก ๋ณด๋ ๊ฒ ์ด์๋ค.
์ ํ์
r=0์ธ ๊ฒฝ์ฐ
dp[r][c] = max{dp[1][c-1], dp[1][c-2]} + arr[r][c]
r=1์ธ ๊ฒฝ์ฐ
dp[r][c] = max{dp[0][c-1], dp[0][c-2]} + arr[r][c]
์๋ฌธ์ด ๋ค์๋ ์
r=0 ์ธ ๊ฒฝ์ฐ๋ฅผ ์๋ก ๋ค๋ฉด
dp[1][c-1], dp[1][c-2], dp[0][c-2] ์ ๊ฐ์ด dp[0][c-2] ๋ถ๋ถ๋ ๊ณ ๋ คํด์ผ ํ ๊ฒ ๊ฐ์๋ค.
ํ์ง๋ง
dp[r][c] ๋ฅผ ๊ณ์ฐํ๋๋ฐ dp[0][c-2]๋ ํ์ํ์ง ์์๋ค.
์ด์ ๋
dp[1][c-1]์ ์ด๋ฏธ dp[0][c-2]๋ฅผ ๊ณ ๋ คํ ๊ฐ์ด ๊ณ์ฐ๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ฝ๊ฒ ๋งํ์๋ฉด
dp[0][c-2] ๋ค์ ์ด์ ๋๊ฐ์ ๋ถ๋ถ๊น์ง ๋ผ์ด๋ธ ๊ฒ์ด ํญ์ ๋ ์ด๋์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฒฝ์ฐ๋ dp[1][c-1]์ ๋ค์ด์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ.
์ฝ๋
import java.util.*;
import java.io.*;
public class Main {
static int N;
static int[][] arr;
static int[][] dp;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
int T = Integer.parseInt(br.readLine());
for(int t=0;t<T;t++){
N = Integer.parseInt(br.readLine());
arr = new int[2][N];
dp = new int[2][N];
for(int r=0;r<2;r++){
st = new StringTokenizer(br.readLine());
for(int c=0;c<N;c++){
arr[r][c] = Integer.parseInt(st.nextToken());
}
}
dp[0][0] = arr[0][0];
dp[1][0] = arr[1][0];
for(int c=1;c<N;c++){
for(int r=0;r<2;r++){
if(r==0){
dp[r][c] = Math.max(c-1>=0?dp[1][c-1]:0,c-2>=0?dp[1][c-2]:0) + arr[r][c];
}else if(r==1){
dp[r][c] = Math.max(c-1>=0?dp[0][c-1]:0,c-2>=0?dp[0][c-2]:0) + arr[r][c];
}
}
}
System.out.println(Math.max(dp[0][N-1],dp[1][N-1]));
}
}
}
'๐์ฝ๋ฉํ ์คํธ:CodingTest' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํธ๋ฆฌ์ ์ง๋ฆ (๋ฐฑ์ค 1167๋ฒ) (2) | 2023.12.26 |
---|---|
ํ๋ก์ด๋ ์์ ์๊ณ ๋ฆฌ์ฆ (0) | 2023.12.14 |
bfs ๋ฐฉ๋ฌธ์ฒดํฌ ์์น (2) | 2023.11.22 |
[swea 1868-ํ์ด์ฌ] ํํํํ ์ง๋ขฐ์ฐพ๊ธฐ (0) | 2023.06.22 |
[swea 3304-ํ์ด์ฌ]์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด (0) | 2023.06.21 |