[백준 9465 실버1] 스티커 (DP/Python) 복습 1/3

밀루·2023년 4월 2일
0

백준 문제풀이

목록 보기
21/51

https://www.acmicpc.net/problem/9465

여기 설명이 잘 된 링크가 있어 첨부한다.
https://pacific-ocean.tistory.com/197

이는 위 링크의 코드

t = int(input())
for i in range(t):
  s = []
  n = int(input())
  for k in range(2):
    s.append(list(map(int, input().split())))
  for j in range(1, n):
    if j == 1:
      s[0][j] += s[1][j - 1]
      s[1][j] += s[0][j - 1]
    else:
      s[0][j] += max(s[1][j - 1], s[1][j - 2])
      s[1][j] += max(s[0][j - 1], s[0][j - 2])
  print(max(s[0][n - 1], s[1][n - 1]))

아래는 내 코드

t = int(input())
for _ in range(t):
    s = []
    n = int(input())
    dp = [[0 for _ in range(n)] for _ in range(2)]
    for k in range(2):
        s.append(list(map(int, input().split())))
    for j in range(n):
        if j ==0:
            dp[0][j] = s[0][j]
            dp[1][j] = s[1][j]
        elif j == 1:
            dp[0][j] = dp[1][j-1]+s[0][j]
            dp[1][j] = dp[0][j-1]+s[1][j]
        else:
            dp[0][j] = max(dp[1][j-1], dp[1][j-2])+s[0][j]
            dp[1][j] = max(dp[0][j-1], dp[0][j-2])+s[1][j]
    print(max(dp[0][n - 1], dp[1][n - 1]))

Tech:

  1. 변수를 최대한 덜 생성한 점
  2. 점화식을 잘 세움 (처음에 점화식을 못 세워서 버벅거렸다. 그러나 조금만 생각해보면 점화식이 금방 나온다)
profile
벨로그에 틀린 코드나 개선할 내용이 있을 수 있습니다. 지적은 언제나 환영합니다.

0개의 댓글