제한만 잘 고려하면 됨. 제한의 경우 모든 움직임 이후 check의 과정을 거쳐 제한을 초과하였을 경우에 이전의 값으로 되돌아가는 움직임을 취함.
(더 효율적으로는 if문안에 움직임을 검사하는 프로시저를 추가하면 속도적으로 더 빠를것으로 생각)
def check(board, cent):
x_limit = board[0] // 2
y_limit = board[1] // 2
if cent[0] < -x_limit:
cent[0] += 1
elif cent[0] > x_limit:
cent[0] -= 1
elif cent[1] > y_limit:
cent[1] -= 1
elif cent[1] < -y_limit:
cent[1] += 1
return cent
def solution(keyinput, board):
cent = [0,0]
for i in keyinput:
d = i
if d == 'left':
cent[0] += -1
cent = check(board, cent)
elif d == 'right':
cent[0] += 1
cent = check(board, cent)
elif d == 'up':
cent[1] += 1
cent = check(board, cent)
else:
cent[1] += -1
cent = check(board, cent)
return cent```