코드
tc = int(input())
for _ in range(tc) : # 테스트 케이스 반복
n = int(input())
dp = [list(map(int,input().split())) for _ in range(2)] # dp테이블 작성
if n > 1 : # n이 1보다 크면 대각선 값을 더해준다.
dp[0][1] += dp[1][0]
dp[1][1] += dp[0][0]
for i in range(2,n) :
# 2이상인 경우, 대각선으로 1칸 이상 떨어진 경우 또는 거기서 1칸 건너뛴 경우 중 큰 값을 더해준다
dp[0][i] += max(dp[1][i-1],dp[1][i-2])
dp[1][i] += max(dp[0][i-1],dp[0][i-2])
print(max(dp[0][n-1],dp[1][n-1])) # 더 큰 값을 출력
dp 테이블을 어떻게 계산할지 생각하는 게 까다로웠다.
'백준' 카테고리의 다른 글
[백준] 4485번 녹색 옷 입은 애가 젤다지? 파이썬 코드 (0) | 2023.12.18 |
---|---|
[백준] 18352번 특정 거리의 도시 찾기 (1) | 2023.12.18 |
[백준] 1238번 파티 파이썬 코드 (0) | 2023.12.16 |
[백준] 1504번 특정한 최단 경로 파이썬 코드 (0) | 2023.12.16 |
[백준] 2749번 피보나치 수 3 파이썬 코드 (0) | 2023.12.14 |
코드
tc = int(input())
for _ in range(tc) : # 테스트 케이스 반복
n = int(input())
dp = [list(map(int,input().split())) for _ in range(2)] # dp테이블 작성
if n > 1 : # n이 1보다 크면 대각선 값을 더해준다.
dp[0][1] += dp[1][0]
dp[1][1] += dp[0][0]
for i in range(2,n) :
# 2이상인 경우, 대각선으로 1칸 이상 떨어진 경우 또는 거기서 1칸 건너뛴 경우 중 큰 값을 더해준다
dp[0][i] += max(dp[1][i-1],dp[1][i-2])
dp[1][i] += max(dp[0][i-1],dp[0][i-2])
print(max(dp[0][n-1],dp[1][n-1])) # 더 큰 값을 출력
dp 테이블을 어떻게 계산할지 생각하는 게 까다로웠다.
'백준' 카테고리의 다른 글
[백준] 4485번 녹색 옷 입은 애가 젤다지? 파이썬 코드 (0) | 2023.12.18 |
---|---|
[백준] 18352번 특정 거리의 도시 찾기 (1) | 2023.12.18 |
[백준] 1238번 파티 파이썬 코드 (0) | 2023.12.16 |
[백준] 1504번 특정한 최단 경로 파이썬 코드 (0) | 2023.12.16 |
[백준] 2749번 피보나치 수 3 파이썬 코드 (0) | 2023.12.14 |