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

쏠로몬·2021년 10월 28일
0

접근 방법 : 구현
dictionary를 이용하여 불필요한 분기를 막음.
set을 이용하여 중복에 대한 처리.
문제의 핵심은 양방향이라 처리를 잘 해줘야 함.
단순할 줄 알았는데 생각보다 안풀렸다.

def solution(dirs):
    answer = 0
    dx = [-1, 1, 0, 0]
    dy = [0, 0, -1, 1]
    dir_dict = {"U" : 0, "D" : 1, "L" : 2, "R" : 3}
    visited = set()
    
    cx = 0
    cy = 0
    
    for i in range(len(dirs)):
        nx = cx + dx[dir_dict[dirs[i]]]
        ny = cy + dy[dir_dict[dirs[i]]]
        
        if -5 <= nx <= 5 and -5 <= ny <= 5:
            # 양방향 처리
            if (cx, cy, nx, ny) not in visited:
                visited.add((cx, cy, nx, ny))
                visited.add((nx, ny, cx, cy))
                answer += 1
            cx = nx
            cy = ny
    
    return answer
profile
이사가요~ 티스토리 블로그 입니다. https://help-solomon.tistory.com/

0개의 댓글