문제
게임 A는 4×4 그리드 보드에서 조각을 왼쪽 상단에서 오른쪽 하단으로 이동하면서 각 영역에서 코인을 획득하는 게임입니다.
이 시점에서 캐릭터는 오른쪽 또는 아래로만 이동할 수 있습니다.
예를 들어 보드가 다음과 같은 경우:
다음의 경우는 코인 최대 구매 가능 개수이며 구매 가능한 코인 개수가 38개인 경우입니다.
각 지역에서 얻을 수 있는 코인의 양을 포함하는 2차원 리스트 테이블을 매개변수로 주어지면, 얻을 수 있는 최대 코인의 양을 반환하도록 solve 함수를 작성합니다.
그러나 코드의 일부가 잘못되어 일부 입력에 대해 제대로 작동하지 않습니다.
_**한 줄**_만 변경하여 모든 입력에 대해 올바르게 작동하도록 주어진 코드를 수정합니다.
매개변수 설명
각 구역에서 얻을 수 있는 코인의 양을 담은 2차원 리스트 테이블이 solve 함수의 매개변수로 주어진다.
* 보드는 4×4 크기의 2차원 목록입니다.
* 각 지역에서 사용 가능한 동전의 수는 1에서 9 사이의 자연수입니다.
반환 값에 대한 설명
구매할 수 있는 최대 코인 수를 반환합니다.
예
| 보드 | 반환 |
|———————————– ———— — ——-|——–|
| ((6, 7, 1, 2), (3, 5, 3, 9), (6, 4, 5, 2), (7, 3, 2, 6)) | 38 |
예시 설명
문제의 예와 동일합니다.
문제 코드
def solution(board):
coins = ((0 for c in range(4)) for r in range(4))
for i in range(4):
for j in range(4):
if i == 0 and j == 0:
coins(i)(j) = board(i)(j)
elif i == 0 and j !
= 0:
coins(i)(j) = board(i)(j) + coins(i)(j-1)
elif i !
= 0 and j == 0:
coins(i)(j) = board(i)(j) + coins(i-1)(j)
else:
coins(i)(j) = board(i)(j) + max(coins(i)(j), coins(i-1)(j-1))
answer = coins(3)(3)
return answer
설명
def solution(board):
coins = ((0 for c in range(4)) for r in range(4))
for i in range(4):
for j in range(4):
# (0,0) 좌표에서는 (0,0)의 코인 획득
if i == 0 and j == 0:
coins(i)(j) = board(i)(j)
# 첫째행의 좌표에서는 왼쪽 코인과 해당 좌표의 코인 획득
elif i == 0 and j !
= 0:
coins(i)(j) = board(i)(j) + coins(i)(j-1)
# 첫째열의 좌표에서는 위쪽 코인과 해당 좌표의 코인 획득
elif i !
= 0 and j == 0:
coins(i)(j) = board(i)(j) + coins(i-1)(j)
# 기타 좌표에서는 왼쪽 코인과 위쪽 코인 중 큰 코인과 해당 좌표의 코인 획득
else:
coins(i)(j) = board(i)(j) + max(coins(i)(j-1), coins(i-1)(j))
answer = coins(3)(3)
return answer