[python]アクセス長[プログラマレベル3]


[python]アクセス長[プログラマレベル3]


問題のショートカット

答えを出す。


def solution(dirs):
    x, y = 0, 0 # 시작 좌표를 0, 0으로 지정
    map = dict() # 좌표를 키로 사용하는 해시 생성
    for command in dirs: # O(dirs)
        if command == 'U' and y < 5: # 위로
            map[(x, y, x, y+1)] = True # 현재 좌표, 이동할 좌표
            # x, y 좌표 작은게 왼쪽으로~
            y += 1
        elif command == 'D' and y > -5: # 아래로
            map[(x, y-1, x, y)] = True # 이동할 좌표, 현재 좌표
            y -= 1
        elif command == 'R' and x < 5: # 오른쪽으로
            map[(x, y, x+1, y)] = True # 현재 좌표, 이동할 좌표
            x += 1
        elif command == 'L' and x > -5: # 왼쪽으로
            map[(x-1, y, x, y)] = True # 이동할 좌표, 현재 좌표.
            x -= 1

    return len(map) # 추가된 값들이 곧 방문 길이

説明する。

def solution(dirs):
    position = (0, 0) # 시작 좌표를 0, 0으로 지정
    
    command_dict = {
        'U': (-1, 0),
        'D': (1, 0),
        'R': (0, 1),
        'L': (0, -1)
    }
    
    check = set() # 좌표를 키로 사용하는 해시 생성
    for command in dirs: # O(dirs)
        direction = command_dict[command]
        next_position = tuple(map(sum, zip(position, direction)))
        
        y, x = next_position
        if -5 <= y <= 5 and -5 <= x <= 5:
            check.add(tuple(sorted([position, next_position])))
            position = next_position

    return len(check)