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

MinTa·2022년 3월 2일
0
post-thumbnail

문제

프로그래머스 방문 길이

풀이

def solution(dirs):
    coord_dict = {}
    
    cur_y = 0
    cur_x = 0
    
    for dir in dirs:
        if dir == "U" and cur_y < 5:
            # (현재 좌표, 이동할 좌표)
            coord_dict[(cur_y,cur_x,cur_y+1,cur_x)] = True
            cur_y += 1
            
        if dir == "D" and cur_y > -5:
            # (이동할 좌표, 현재 좌표)
            coord_dict[(cur_y-1,cur_x,cur_y,cur_x)] = True
            cur_y -= 1
            
        if dir == "L" and cur_x > -5:
            # (현재 좌표, 이동할 좌표)
            coord_dict[(cur_y,cur_x,cur_y,cur_x-1)] = True
            cur_x -= 1
        
        if dir == "R" and cur_x < 5:
            # (이동할 좌표, 현재 좌표)
            coord_dict[(cur_y,cur_x+1,cur_y,cur_x)] = True
            cur_x += 1
    
    return len(coord_dict)

요약

  1. 딕셔너리를 통해 중복된 길은 아무런 값도 넣지 않고 새로운 길이시에만 딕셔너리에 넣어준다.
  2. 중복될 수 있는 길끼리는 좌표를 서로 거꾸로 뒤집어 넣어 중복되는 길이 두번 들어가지 않게끔 해준다.
  • "U"와 "D"는 위아래로 길이 중복될 수 있고, "L"와 "R"는 좌우로 길이 중복될 수 있기 때문에 "U"로 가는 명령어 일시에는 (현재 좌표, 이동할 좌표), "D"로 가는 명령어 일시에는 (이동할 좌표, 현재 좌표)로 키를 바꿔 넣어 딕셔너리의 키 값이 달라 값이 두번 들어가지 않게끔 한다.
  1. 위 과정을 끝내면 딕셔너리에는 새로운 길에 대한 값들만 들어가있기 때문에 딕셔너리의 길이를 구하면 그것이 곧 처음 가본 길만 세는 답이 된다.
profile
지(치지않고)꾸(준히)열(심히)

0개의 댓글