본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 1495 기타리스트

by Alan_Kim 2023. 3. 20.
728x90
반응형

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

 

1495번: 기타리스트

첫째 줄에 N, S, M이 주어진다. (1 ≤ N ≤ 50, 1 ≤ M ≤ 1,000, 0 ≤ S ≤ M) 둘째 줄에는 각 곡이 시작하기 전에 줄 수 있는 볼륨의 차이가 주어진다. 이 값은 1보다 크거나 같고, M보다 작거나 같다.

www.acmicpc.net

 

문제 해결

  • 전형적인 DP문제
  • dp[i][j]를 i번째 볼륨조절 후 j의 볼륨 가능 유무로 정의할 수 있다.

 

CODE

import sys
input = sys.stdin.readline

n, s, m = map(int, input().split()) # 곡 개수, 시작 볼륨, 최대 볼륨
V = [0] + list(map(int, input().split()))
dp = [[0 for _ in range(m+1)] for _ in range(n+1)]
dp[0][s] = 1
for i in range(1,n+1):
    for j in range(m+1):
        if dp[i-1][j] == 1:
            if j + V[i] <=m:
                dp[i][j+V[i]] = 1
            if j - V[i] >=0:
                dp[i][j-V[i]] = 1
for i in range(m,-1,-1):
    if dp[n][i] == 1:
        print(i)
        exit()
else:
    print(-1)
728x90
반응형

'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글

[python] 백준 9084 동전  (0) 2023.03.22
[python] 백준 1092 배  (0) 2023.03.21
[python] 백준 2631 줄세우기  (0) 2023.03.20
[python] 백준 15683 감시  (0) 2023.03.19
[python] 백준 1057 토너먼트  (0) 2023.03.19

댓글