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한다.