https://school.programmers.co.kr/learn/courses/30/lessons/49994
게임 캐릭터를 4가지 명령어를 통해 움직이려 합니다.
명령어
U: 위쪽으로 한 칸 가기
D: 아래쪽으로 한 칸 가기
R: 오른쪽으로 한 칸 가기
L: 왼쪽으로 한 칸 가기
캐릭터는 좌표평면의 (0, 0) 위치에서 시작합니다. 좌표평면의 경계는 왼쪽 위(-5, 5), 왼쪽 아래(-5, -5), 오른쪽 위(5, 5), 오른쪽 아래(5, -5)로 이루어져 있습니다.
단, 좌표평면의 경계를 넘어가는 명령어는 무시합니다.
명령어가 매개변수 dirs로 주어질 때, 게임 캐릭터가 처음 걸어본 길의 길이를 구하여 return 하는 solution 함수를 완성해 주세요.
각 좌표가 벗어나는지 확인 + 처음 가는 길인지 확인하면 되는 문제
처음 가는 길은 A->B로 한 번 들렸다면 B->A도 중복인 점을 고려해야 합니다.
def solution(dirs):
answer = 0
dic = {"L":(0, -1), "R":(0,1), "U":(1,0), "D":(-1,0)}
x,y = 0,0
arr = []
for d in dirs:
nx = x + dic[d][0]
ny = y + dic[d][1]
if -5 <= nx <= 5 and -5 <= ny <= 5:
arr.append((x, y, nx, ny))
arr.append((nx, ny, x, y))
x,y = nx, ny
return len(set(arr))//2