728x90
반응형
https://www.acmicpc.net/problem/5557
5557번: 1학년
상근이가 1학년 때, 덧셈, 뺄셈을 매우 좋아했다. 상근이는 숫자가 줄 지어있는 것을 보기만 하면, 마지막 두 숫자 사이에 '='을 넣고, 나머지 숫자 사이에는 '+' 또는 '-'를 넣어 등식을 만들며 놀
www.acmicpc.net
문제 해결
- 이전 항들의 영향을 받는다. 이전 항들까지 더하기, 빼기를 이용해서 만들 수 있는 것은 0이상 20 이하여야 한다.
- dp로 가지수를 만들수 있다. dp[i][j]를 j-1번째 항까지 더하기 빼기를 이용해서 i를 만들 수 있는 가지수를 나타낸다.
- dp[A[n-1]][n-2] 의 값을 구하면 된다.
CODE
import sys
input = sys.stdin.readline
n = int(input())
A = list(map(int,input().split()))
dp = [[0]*n for _ in range(21)]
dp[A[0]][0] = 1
for i in range(1,n-1):
for j in range(21):
if j + A[i] <= 20:
dp[j+A[i]][i] += dp[j][i-1]
if 0<=j-A[i]:
dp[j-A[i]][i] += dp[j][i-1]
print(dp[A[-1]][n-2])
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 2841 외계인의 기타 연주 (0) | 2023.03.15 |
---|---|
[python] 백준 1969 DNA (0) | 2023.03.15 |
[python] 백준 17626 Four Squares (0) | 2023.03.14 |
[python] 백준 1700 멀티탭 스케줄링 (0) | 2023.03.14 |
[python] 백준 1783 병든 나이트 (0) | 2023.03.14 |
댓글