[python]アクセス長[プログラマレベル3]
9956 ワード
[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)
Reference
この問題について([python]アクセス長[プログラマレベル3]), 我々は、より多くの情報をここで見つけました https://velog.io/@ithingv/Python-방문길이-프로그래머스-Level-3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol