[프로그래머스] Lv3 방문 길이

O2o2✨·2020년 12월 20일
0

알고리즘

목록 보기
34/43

링크: Summer/Winter Coding(~2018) > 방문 길이


코드

def solution(dirs):
    answer = 0
    visited = set()
    curPos = (0, 0)
    direction = {"U": (0, 1), "L": (-1, 0), "D": (0, -1), "R": (1, 0)}
    
    for command in dirs:
        dx, dy = direction[command]
        nextPos = curPos[0] + dx, curPos[1] + dy
        
        if (-5 <= nextPos[0] <= 5) and (-5 <= nextPos[1] <= 5):
            if (curPos, nextPos) not in visited:
                visited.add((curPos, nextPos))
                visited.add((nextPos, curPos))
                answer += 1
            curPos = nextPos
            
    return answer

풀이

  • 각 방향을 dictionary로 만들었다.
  • 현재 위치에 명령어를 계산한 값이 좌표평면 경계 내에 있는지 확인한다.
  • visitedset으로 만들고 방문한 길인지 확인한다. (속도 향상)
  • a->b로가는 길은 b->a로 가는 길과 동일하다. 따라서 두 방향을 모두 방문했다고 표시한다.
  • 새로운 방문이 있을 때 마다 answer를 증가시킨다.
  • 현재 좌표를 다음 이동 좌표로 갱신한다.
profile
프론트엔드 & 퍼블리셔

0개의 댓글