문제
알고리즘
- 반복문을 통해 명령어를 수행한다.
- 이동해야 하는 좌표가 범위 내에 있다면 명령어를 수행한다.
- 현재 위치와 이동 후 위치, 이동 후 위치와 현재 위치를 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
'CodingTest > Programers' 카테고리의 다른 글
[programers] 프로그래머스(파이썬) : 오픈채팅방 (0) | 2022.04.27 |
---|---|
[programers] 프로그래머스(파이썬) : 문자열 압축 (0) | 2022.04.26 |
[programers] 프로그래머스(파이썬) : 스킬트리 (0) | 2022.04.26 |
[programers] 프로그래머스(파이썬) : 점프와 순간 이동 (0) | 2022.04.25 |
[programers] 프로그래머스(파이썬) : 영어 끝말잇기 (0) | 2022.04.24 |