n = 7
board = [[2,5,1,6,1,4,1],
[6,1,1,2,2,9,3],
[7,2,3,2,1,3,1],
[1,1,3,1,7,1,2],
[4,1,2,3,4,1,2], # [4,1,2,3,4,1,3], [4,1,2,3,4,1,2]
[3,3,1,2,3,4,1],
[1,5,2,9,4,7,0]]
def jump(x,y):
if x >= n or y >= n: return False # 게임판 밖을 벗어남.
if x == n-1 and y == n-1:
# print(board[x][y], x, y)
return True # 마지막칸에 도착한경우.
jump_size = board[x][y]
return jump(x+jump_size, y) or jump(x, y+jump_size)
print(jump(0,0))
# 동적 계획법
cache = [ [None]*n for _ in range(n)]
# print('cache', cache)
def jump2(x,y):
if x >= n or y >= n: return False
if x == n-1 and y == n-1: return True
if cache[x][y] is not None:
return cache[x][y]
else:
jump_size = board[x][y]
cache[x][y] = jump2(x+jump_size, y) or jump2(x, y+jump_size)
return cache[x][y]
print(jump2(0,0))
2018년 3월 5일 월요일
[python][algospot] 외발뛰기 (JUMPGAME)
[구종만의 알고리즘 문제해결전략] 내용을 파이썬으로 변경
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기