https://school.programmers.co.kr/learn/courses/30/lessons/120861
def solution(keyinput, board):
answer = [0, 0]
x = board[0] // 2
y = board[1] // 2
for i in keyinput:
if i == 'up' and answer[1] + 1 <= y:
answer[1] += 1
elif i == 'down' and answer[1] - 1 >= -y:
answer[1] -= 1
elif i == 'left' and answer[0] - 1 >= -x:
answer[0] -= 1
elif i == 'right' and answer[0] + 1 <= x:
answer[0] += 1
return answer
x, y
에 담았다.-
를 활용해 검사했다.def solution(keyinput, board):
x_lim, y_lim = board[0] // 2, board[1] // 2
move = {'left':(-1, 0), 'right':(1 , 0), 'up':(0, 1), 'down':(0, -1)}
x, y = 0, 0
for k in keyinput:
dx, dy = move[k]
if abs(x + dx) > x_lim or abs(y + dy) > y_lim:
continue
else:
x, y = x + dx, y + dy
return [x, y]
if-elif
없이 해결할 수 있어 간결하다.def solution(keyinput, board):
move = {
'up': (0, 1),
'down': (0, -1),
'left': (-1, 0),
'right': (1, 0)
}
x_limit = board[0] // 2
y_limit = board[1] // 2
x, y = 0, 0
for key in keyinput:
dx, dy = move[key]
nx, ny = x + dx, y + dy
# 범위 체크
if -x_limit <= nx <= x_limit and -y_limit <= ny <= y_limit:
x, y = nx, ny
return [x, y]
피드백은 언제나 환영입니다 :)