문제
여기서 직접 풀어보실 수 있습니다!
https://programmers.co.kr/learn/courses/30/lessons/49994
게임 캐릭터를 4가지 명령어를 통해 움직이면서
처음으로 방문한 루트만 세주면 되는 문제입니다.
풀이
분기를 어레이와 딕셔너리를 이용해서 이렇게 깔끔하게 짤 수 있었습니다.
set()을 쓴 것도 포인트입니다.
def solution(dirs):
answer = 0
visited = set()
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
cmd = {'R':0, 'L':1, 'U':2, 'D':3}
x, y = 0, 0
for d in dirs:
# 이 코드가 포인트!
# cmd를 특정 idx와 매핑을 시켜 다른 동작을 하도록 만듭니다.
new_x, new_y = x + dx[cmd[d]], y + dy[cmd[d]]
# 경계값을 체크해줍니다.
if new_x < -5 or new_x > 5 or new_y < -5 or new_y > 5:
continue
# 모든 루트의 가운데 점은 구별될 수 있으므로
# 루트를 포인트로 나타낼 수 있습니다.
point = ((new_x + x)/2, (new_y + y)/2)
if point not in visited:
visited.add(point)
answer += 1
# 이동한 곳으로 점의 위치를 바꿔줍니다.
x = new_x
y = new_y
return answer
댓글남기기