[Baekjoon 9465] 스티커

문지영·2023년 2월 26일
0

CODINGTEST

목록 보기
6/21

문제 9465

from sys import stdin

T = int(stdin.readline()) # testcase 개수
for _ in range(T):
    N = int(stdin.readline()) # 열 개수

    dp = [] # 스티커 점수 2차원 배열
    for _ in range(2):
        dp.append(list(map(int, stdin.readline().split())))

    # 스티커 길이가 1
    if N==1:
        print(max(dp[0][0],dp[1][0]))
        continue
	
    # 스티커 길이가 2 이상
    # 2인 경우 max(dp[0][1], dp[1][1])
    dp[0][1] += dp[1][0]
    dp[1][1] += dp[0][0]       
    for i in range(2, N):
        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][-1], dp[1][-1]))

풀이

index error 방지를 위해 스티커 길이가 1일 때, 첫 열의 값 중 최대값
스티커 길이가 2일 때, for문을 돌지 않음
아래는 스티커 길이가 3 이상일 때부터 적용되는 방식

결과

profile
BeHappy

0개의 댓글