DHistory

[Baekjoon] DP - 9465 스티커 본문

Computer Science/Algorithm

[Baekjoon] DP - 9465 스티커

ddu0422 2023. 9. 26. 21:46

문제

 

9465번: 스티커

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의

www.acmicpc.net

 

풀이

import sys

t = int(sys.stdin.readline().rstrip())


def solution(n, a, b):
    d = [[0, 0] for _ in range(n + 1)]
    d[1][0] = a[1]
    d[1][1] = b[1]

    for i in range(2, n + 1):
        d[i][0] = max(
            max(d[i - 2][0], d[i - 2][1]) + a[i],
            d[i - 1][1] + a[i],
        )
        d[i][1] = max(
            max(d[i - 2][0], d[i - 2][1]) + b[i],
            d[i - 1][0] + b[i]
        )

    return max(d[n])


result = []
for _ in range(t):
    n = int(sys.stdin.readline().rstrip())
    a = [0] + list(map(int, sys.stdin.readline().rstrip().split()))[:n]
    b = [0] + list(map(int, sys.stdin.readline().rstrip().split()))[:n]
    result.append(solution(n, a, b))
print(*result, sep='\n')

 

채점 결과