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

손주애·2020년 12월 18일
0

코딩테스트

목록 보기
18/22

def chkVisited(visited, beforePosY, beforePosX, currPosY, currPosX):
    visited.add(((beforePosY, beforePosX), (currPosY, currPosX)))
    visited.add(((currPosY, currPosX), (beforePosY, beforePosX)))
    
def solution(dirs):
    visited=set()
    currPosX=0
    currPosY=0
    
    for action in dirs:
        beforePosX=currPosX
        beforePosY=currPosY
        if action=='U' and currPosY-1>=-5:
            currPosY=currPosY-1
            chkVisited(visited, beforePosY, beforePosX, currPosY, currPosX)
            
        elif action=='D' and currPosY+1<=5:
                currPosY=currPosY+1
                chkVisited(visited, beforePosY, beforePosX, currPosY, currPosX)
            
        elif action=='R' and currPosX+1<=5:
                currPosX=currPosX+1
                chkVisited(visited, beforePosY, beforePosX, currPosY, currPosX)
            
        elif action=='L' and currPosX-1>=-5:
                currPosX=currPosX-1
                chkVisited(visited, beforePosY, beforePosX, currPosY, currPosX)
                       
    return len(visited)//2

🚩풀이 방법

  • 4가지 방향의 명령으로 이동하되 -5~5 사이 좌표만 이동 가능하도록 조건 제시
  • 지나간 경로를 표시하여 visited인 set에 담는다. (갈때, 올때 경로 둘다 표시)
  • 중복된 방문거리는 set에 들어가지 않는다.
  • 최종 적으로 지나간 경로만 set에 들어있으므로 set의 길이//2한다.
profile
백엔드 개발자입니다:)

0개의 댓글