주의할 점 - 좌표평면에서 (x, y)는 2차원 배열에서 Array[y][x]로 조회 해야 한다.
def calc(x, y, matrix):
# 벗어난 좌표의 경로는 0을 반환
if x < 0 or y < 0:
return 0
return matrix[y][x]
def solution(m, n, puddles):
# 모든 위치를 1로 초기화
matrix = [[1] * m for _ in range(n)]
# 물에 잠긴 지역을 0으로 변경, index를 고려해 -1 연산
for puddle in puddles:
matrix[puddle[1]-1][puddle[0]-1] = 0
# 맨 왼쪽줄부터
for x in range(m):
# 위에서 아래로
for y in range(n):
# 만약 물에 잠겼거나 첫 시작지점이라면, 계산 없이 continue
if matrix[y][x] == 0 or (x == 0 and y == 0):
continue
# 아니라면, 왼쪽에서 오는 경로 + 위에서 오는 경로를 계산
matrix[y][x] = calc(x-1, y, matrix) + calc(x, y-1, matrix)
return matrix[y][x] % 1000000007