1. 문제
https://programmers.co.kr/learn/courses/30/lessons/49994
2. 풀이
2.1. 나의 풀이
지나간 선을 표기하기 위하여 아래와 같이 check 배열을 생성한 후에 (nr, nc, r, c), (r, c, nr, nc)가 모두 배열 안에 포함되었는지 확인합니다. 둘 중에 하나라도 포함되었으면 해당 선을 지나간 것이고, 아니면 지나가지 않은 것으로 간주합니다.
def solution(dirs):
r, c = 5, 5
dr, dc = [0, 0, -1, 1], [-1, 1, 0, 0]
move_types =['L', 'R', 'U', 'D']
check = []
cnt = 0
for dir in dirs:
for move in range(len(move_types)):
if dir == move_types[move]:
nr = r + dr[move]
nc = c + dc[move]
if not (10<nr or 0>nr or nc>10 or nc<0):
if (nr, nc, r, c) not in check and (r, c, nr, nc) not in check:
check.append((r, c, nr, nc))
check.append((nr, nc, r, c))
cnt += 1
r, c = nr, nc
return cnt