[programmers/py] 방문 길이

승민·2024년 2월 22일

알고리즘

목록 보기
64/171

방문 길이

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

0개의 댓글