Hi, There!
안녕하세요, 바오밥입니다.
목차
- 문제
- 풀이
문제
문제 설명
A 게임은 4x4 격자 모양의 보드의 가장 왼쪽 위에서 가장 오른쪽 아래로 말을 이동시키면서 각 구역에 있는 코인을 획득하는 게임입니다.
이때, 말은 오른쪽 또는 아래쪽으로만 이동할 수 있습니다.
예를 들어, 보드가 아래와 같다면
아래의 경우가 코인을 최대로 획득할 수 있는 경우이고 이때 획득하는 코인은 38입니다.
각 구역에서 획득할 수 있는 코인 양을 담은 2차원 리스트 board가 매개변수로 주어질 때, 최대로 획득할 수 있는 코인의 양을 return 하도록 solution 함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다.
주어진 코드에서 한 줄만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
매개변수 설명
각 구역에서 획득할 수 있는 코인 양을 담은 2차원 리스트 board가 solution 함수의 매개변수로 주어집니다.
- board는 4x4 크기인 2차원 리스트입니다.
- 각 구역에서 획득할 수 있는 코인의 양은 1 이상 9 이하인 자연수입니다.
return 값 설명
최대로 획득할 수 있는 코인의 양을 return 합니다.
예제
예제 설명
문제에 나온 예와 같습니다.
풀이
풀이 코드 및 해설
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]
# coins 리스트에 우측으로 이동한 값들 저장
elif i != 0 and j == 0:
coins[i][j] = board[i][j] + coins[i-1][j]
# coins 리스트에 아래로 이동한 값을 저장
else:
coins[i][j] = board[i][j] + max(coins[i-1][j], coins[i][j-1])
# 오른쪽으로 이동한 값과 밑으로 이동한 값 중 더 큰 값을 반환
# 반환 받은 값을 현재 위치 값board[i][j]과 더함
answer = coins[3][3]
# coins[3][3]은 모든 리스트를 다 순회한 값
# 위에서 더 큰 값만 반환하는 로직이기 때문에 가장 큰 값이 저장되어 있음
return answer
# 저장된 값 반환
'Certificate > Cert - Cos Pro 1급' 카테고리의 다른 글
[프로그래머스] Cos Pro 1급 모의고사, 꽃 피는 봄이 언제 오나요 (0) | 2021.07.01 |
---|---|
[프로그래머스] Cos Pro 1급 모의고사, 카드 섞기 (0) | 2021.07.01 |
[프로그래머스] Cos Pro 1급 모의고사, 만났을 때 최대인 경우 (0) | 2021.06.30 |
[프로그래머스] Cos Pro 1급 모의고사, 급여 총합 구하기 (0) | 2021.06.30 |
[프로그래머스] Cos Pro 1급 모의고사, UP AND DOWN 게임 (0) | 2021.06.30 |