Programmers_LV0_캐릭터의 좌표

jkky98·2023년 2월 8일
0

CodingTraining

목록 보기
10/61

제한만 잘 고려하면 됨. 제한의 경우 모든 움직임 이후 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```
profile
자바집사의 거북이 수련법

0개의 댓글