프로그래머스 방문 길이

최세찬·2021년 8월 13일
0

🙂 문제 - 방문길이

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

✔️ 문제 내용

문제 이미지가 많으므로 URL을 통해 문제를 읽어주세여:)

게임 캐릭터를 4가지 명령어를 통해 움직이려 합니다. 명령어는 다음과 같습니다.

  • U: 위쪽으로 한 칸 가기
  • D: 아래쪽으로 한 칸 가기
  • R: 오른쪽으로 한 칸 가기
  • L: 왼쪽으로 한 칸 가기
    캐릭터는 좌표평면의 (0, 0) 위치에서 시작합니다. 좌표평면의 경계는 왼쪽 위(-5, 5), 왼쪽 아래(-5, -5), 오른쪽 위(5, 5), 오른쪽 아래(5, -5)로 이루어져 있습니다.
    명령어가 매개변수 dirs로 주어질 때, 게임 캐릭터가 처음 걸어본 길의 길이를 구하여 return 하는 solution 함수를 완성해 주세요.

❌ 제한 사항

  • dirs는 string형으로 주어지며, 'U', 'D', 'R', 'L' 이외에 문자는 주어지지 않습니다.
  • dirs의 길이는 500 이하의 자연수입니다.

🖐풀이 방법

  • 프로그래머스에서 LEVEL 2로 되어있다.
  • (현재 좌표, 이동좌표)의 데이터를 방문 한 지점으로 체크해주면 된다.
  • 경로에는 방향성이 없으므로 (이동 좌표, 현재 좌표)도 함께 처리해주어야 한다.
  • 경로를 벗어나는 경우만 무시하고 아무 연산을 해주지 않으면 된다.

📃 CODE

 def solution(dirs):
   answer = 0
   dic = {'U':[1,0],
         'D':[-1,0],
         'R':[0,1],
         'L':[0,-1]}
   
   start = [0,0]
   vst = [] 
   for s in dirs:
       
       dx = dic[s][0]
       dy = dic[s][1]
       
       if start[0]+dx<-5 or start[0]+dx>5:
           continue
       if start[1]+dy>5 or start[1]+dy<-5:
           continue
       
       trace = (start[0],start[1],start[0]+dx,start[1]+dy)
       retrace = (start[0]+dx,start[1]+dy,start[0],start[1])
       
       if trace not in vst or retrace not in vst:
           vst.append(trace)
           vst.append(retrace)
       start[0],start[1] = start[0]+dx,start[1]+dy
   print(vst)
   return len(vst)//2
profile
느리지만 계속해서 성장의 가치를 알고 있습니다.

0개의 댓글