[Python] 방문길이 [프로그래머스 Level 3]
[Python] 방문길이 [프로그래머스 Level 3]
풀이 1
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) # 추가된 값들이 곧 방문 길이
풀이 2
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)
Author And Source
이 문제에 관하여([Python] 방문길이 [프로그래머스 Level 3]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ithingv/Python-방문길이-프로그래머스-Level-3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)