Menu
CoddyTech

Burst Balloons

어려움동적 계획법python iconjava iconcpp iconc iconjs icon+10

풍선이 한 줄로 주어지며, 이를 nums라고 합니다. 여기서 nums[i]는 풍선 i에 적힌 숫자입니다. 원하는 순서대로 풍선을 하나씩 모두 터뜨립니다. 풍선을 터뜨리면 left × nums[i] × right개의 동전을 얻습니다. 여기서 left와 right는 현재 풍선의 이웃, 즉 아직 줄에 남아 있는 양쪽에서 가장 가까운 풍선에 적힌 숫자입니다. 줄의 양 끝 바깥에 있어 이웃이 없는 경우에는 1로 계산합니다. 풍선을 터뜨리고 나면 양쪽 이웃은 서로 인접하게 됩니다. 얻을 수 있는 동전의 최댓값을 반환하세요.

함수

maxCoins(nums: integer-array) → integer
numsinteger-array
풍선에 적힌 숫자, 왼쪽에서 오른쪽 순서로
반환값integer
모든 풍선을 터뜨려 모을 수 있는 최대 코인 수

제약 조건

  • 1 ≤ nums.length ≤ 300
  • 0 ≤ nums[i] ≤ 100
  • 정답은 3 × 108보다 작으므로 32비트 부호 있는 정수에 들어갑니다.

예제

입력
nums = [2, 4, 3]
출력
33
설명
처음의 4를 터뜨리면 2 × 4 × 3 = 24개의 동전을 얻습니다. 이제 2와 3은 이웃이므로, 2를 터뜨리면 1 × 2 × 3 = 6개를 얻고, 이제 혼자 남은 3을 터뜨리면 1 × 3 × 1 = 3개를 얻습니다. 합계는 33이며, 다른 순서로는 더 높은 점수를 얻을 수 없습니다. 작은 수인 2를 먼저 터뜨리면 얻을 수 있는 점수는 이미 최대 24로 제한됩니다.

lock icon제출 시 숨은 테스트 +15개

challenge icon

후속 질문

코인을 가장 많이 얻을 수 있는 폭발 순서도 하나 반환해 주실 수 있나요?

코드 초기화
def maxCoins(nums):
    # 여기에 코드를 작성하세요
테스트 케이스

케이스 1

케이스 2

케이스 3

입력

nums = [2, 4, 3]

기대값

33