Algorithm/프로그래머스
[프로그래머스] Lv2 - 방문 길이 (파이썬)
_temp
2022. 5. 13. 14:24
https://programmers.co.kr/learn/courses/30/lessons/49994
코딩테스트 연습 - 방문 길이
programmers.co.kr
def solution(dirs):
visited = set()
direction = {'R': [0, 1], 'U': [1, 0], 'L': [0, -1], 'D': [-1, 0]}
x, y = 0, 0
answer = 0
for order in dirs:
dx, dy = direction[order]
if -5 <= x+dx <= 5 and -5 <= y+dy <= 5:
road1 = ''.join(list(map(str, [x, y, x+dx, y+dy])))
road2 = ''.join(list(map(str, [x+dx, y+dy, x, y])))
if road1 not in visited:
answer += 1
visited.add(road1)
visited.add(road2)
x += dx
y += dy
return answer
풀이
1. 방문 여부를 집합으로 관리해주었다.
2. direction은 각 방향마다 좌표 이동을 딕셔너리로 정의
3. 각 명령마다
- -5~5의 범위 안의 모든 값마다
- x, y, x+dx, y+dy를 합한 문자열을 visited에 없으면 answer += 1
- 이후 해당 문자열을 visited에 add (x+dx, y+dy, x, y도 포함, 선분이므로 두 가지 경우)
- x, y 값 이동
4. answer 반환