본문 바로가기
프로그래머스/Python

[프로그래머스] 방문 길이 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 8. 21.
728x90
반응형

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

해당 문제는 이동한 위치와 이동한 길을 따로 저장하고 이동한 길이 겹치지 않는 경우를 계산해 주면 된다.
 

  1. 이동한 점들을 저장해 줄 리스트를 생성하고 초기 시작 위치인 0, 0을 추가해 준다. point = [[0, 0]]
  2. 이동한 길들을 저장해 줄 리스트를 생성한다. way = []
  3. 명령어를 하나씩 추출하여 for i in dirs
  4. 만약 추출한 명령어가 'U'이면 if (i == 'U')
  5. 이동할 다음 위치의 좌표를 구해준다. next = [point[-1][0], point[-1][1] + 1]
  6. 만약 추출한 명령어가 'D'이면 elif (i == 'D')
  7. 이동할 다음 위치의 좌표를 구해준다. next = [point[-1][0], point[-1][1] - 1]
  8. 만약 추출한 명령어가 'R'이면 elif (i == 'R')
  9. 이동할 다음 위치의 좌표를 구해준다. next = [point[-1][0] + 1, point[-1][1]]
  10. 만약 추출한 명령어가 'L'이면 else
  11. 이동할 다음 위치의 좌표를 구해준다. next = [point[-1][0] - 1, point[-1][1]]
  12. 만약 이동할 다음 위치의 좌표가 주어진 범위 안에 있을 때 if (-5 <= next[0] <= 5) and (-5 <= next[1] <= 5)
  13. 이동할 길이 처음 가는 길이라면 if ([point[-1], next] not in way) and ([next, point[-1]] not in way)
  14. 처음 걸어본 길의 길이에 추가해 준다. answer += 1
  15. 이동한 길을 추가해 주고 way.append([point[-1], next])
  16. 이동한 위치의 좌표도 추가해 준다. point.append(next)
반응형

3. 소스코드

def solution(dirs):
    answer = 0
    
    point = [[0, 0]]
    way = []
    for i in dirs:
        if (i == 'U'):
            next = [point[-1][0], point[-1][1] + 1]
        elif (i == 'D'):
            next = [point[-1][0], point[-1][1] - 1]
        elif (i == 'R'):
            next = [point[-1][0] + 1, point[-1][1]]
        else:
            next = [point[-1][0] - 1, point[-1][1]]
            
        if (-5 <= next[0] <= 5) and (-5 <= next[1] <= 5):
            if ([point[-1], next] not in way) and ([next, point[-1]] not in way):
                answer += 1
        
            way.append([point[-1], next])
            point.append(next)
        
    return answer
728x90
반응형