CodingTest/Programers

[programers] 프로그래머스(파이썬) : 방문 길이

JunJangE 2022. 4. 26. 00:45

문제

 

코딩테스트 연습 - 방문 길이

 

programmers.co.kr

알고리즘

- 반복문을 통해 명령어를 수행한다.

- 이동해야 하는 좌표가 범위 내에 있다면 명령어를 수행한다.

- 현재 위치와 이동 후 위치, 이동 후 위치와 현재 위치를 answer에 추가한다.

- answer는 set()의 자료구조를 갖고 있어 중복을 제거한다.

- 명령어를 다 수행하고 answer를 2로 나눴을 때 몫을 출력한다.

코드

# 11:30 => 12:01

def solution(dirs):
    answer = set() # set()을 통해 중복을 제거
    d = {"U" : [1, 0], "D" : [-1, 0], "R" : [0, 1], "L" : [0, -1]}
    
    x, y = 0, 0
    
    # 반복문을 통해 명령어를 수행
    for i in dirs:
        dx, dy = d[i]
        
        # 이동해야하는 좌표
        nx = x + dx 
        ny = y + dy 
        
        # 범위 내에 있다면 명령어 수행
        if -5 <= nx <= 5 and -5 <= ny <= 5:
            answer.add((x,y,nx,ny)) # 현재 위치 -> 이동 후 위치
            answer.add((nx,ny,x,y)) # 이동 후 위치 -> 현재 위치
            x, y = nx, ny # 이동 위치로 현재 위치 변경
            
            
    # answer를 2로 나눴을 때 몫이 처음 걸어본 길이가 된다.
    return len(answer)//2

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com