[백준/python/1495]기타리스트

bej_ve·2022년 3월 23일
0

python알고리즘

목록 보기
5/46

문제링크 : 기타리스트

이 문제는 이중배열을 사용해서 풀었다. 맞왜틀!!만 외쳤던 문제다. 알고보니 쉼표를 괄호로 적었던 것이였다,,,,


n,s,m=map(int,input().split())
song=list(map(int, input().split()))
dp=[[0]*(m+1) for _ in range(n+1)]
dp[0][s]=1 #시작음 1표시

for i in range(n):
    for j in range(m+1):
        if dp[i][j]==1:
            if j+song[i]<=m:
                dp[i+1][j+song[i]]=1
            if j-song[i]>=0:
                dp[i+1][j-song[i]]=1

answer=-1
for i in range(m, -1,-1):  #내려가며 1이 있다면 그 소리가 낼 수 있는 최대소리
    if dp[n][i]==1:
        answer=i
        break
print(answer)

노래의 순서와 음 하나씩을 배열로 주었다. 배열에 1이 표시되어 있으면 해당음은 가능하다는 뜻이다.
범위를 잘 측정하여 연주가능한 음에 1을 표시해주고 마지막에 마지막곡의 배열에서 1을 가지고 있는 음을 찾아준다. 이 때, 최댓값을 출력하기위해 가장 높은음부터 내려왔다.

0개의 댓글