동캄의 코딩도장

프로그래머스 level2 [방문 길이] 파이썬 본문

코테/프로그래머스

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

동 캄 2021. 12. 9. 21:47

https://programmers.co.kr/learn/courses/30/lessons/49994

 

코딩테스트 연습 - 방문 길이

 

programmers.co.kr

#프로그래머스 방문 길이

def solution(dirs):
    answer = 0
    link=[[[[0]*11 for _ in range(11)] for _ in range(11)] for _ in range(11)]
    x=5
    y=5
    for dir in dirs:
        if dir=='U' and y<10:
            if (link[x][y][x][y+1]!=1) and (link[x][y+1][x][y]!=1):
                answer+=1
            link[x][y][x][y+1]=1
            link[x][y+1][x][y]=1
            y+=1
        elif dir=='D' and y>0:
            if (link[x][y][x][y-1]!=1) and (link[x][y-1][x][y]!=1):
                answer+=1
            link[x][y][x][y-1]=1
            link[x][y-1][x][y]=1
            y-=1
        elif dir=='L' and x>0:
            if (link[x][y][x-1][y]!=1) and (link[x-1][y][x][y]!=1):
                answer+=1
            link[x][y][x-1][y]=1
            link[x-1][y][x][y]=1
            x-=1
        elif dir=='R' and x<10:
            if (link[x][y][x+1][y]!=1) and (link[x+1][y][x][y]!=1):
                answer+=1
            link[x][y][x+1][y]=1
            link[x+1][y][x][y]=1
            x+=1
    return answer

처음에 어떻게 풀어야할지 막막하였다. 고민하다 생각보다 x,y의 범위가 크지 않다는것을 다시 확인하고, 

4차원 배열을 생성하였다. link를 생성해서 각 link의 방문과 미방문을 표시하고, 미방문하였을때는 answer+=1 하는 방식으로 길이를 구하였다.