[백준/python/1495]기타리스트
문제링크 : 기타리스트
이 문제는 이중배열을 사용해서 풀었다. 맞왜틀!!만 외쳤던 문제다. 알고보니 쉼표를 괄호로 적었던 것이였다,,,,
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을 가지고 있는 음을 찾아준다. 이 때, 최댓값을 출력하기위해 가장 높은음부터 내려왔다.
Author And Source
이 문제에 관하여([백준/python/1495]기타리스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@i_am_developer/백준python1495기타리스트저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)