https://school.programmers.co.kr/learn/courses/30/lessons/49994
문제는 간단하다
좌표평면 위에 걸어간 길이는 구하는데, 중복되지 않은 길을 구하는 것이다.
예를 들어 5,5 -> 5,6 -> 5,5로 갔더라면 걸어간 총 길이는 2(처음 시작은 5,5)이지만 중복되지 않은 길은 1이다.
def solution(dirs):
answer = 0
visit = []
location =[5,5]
graph = [[0 for j in range(11) ]for _ in range(11)]
for i in range(len(dirs)):
if dirs[i] == 'U':
if location[0] - 1 >= 0:
a = [ [location[0], location[1]], [location[0] - 1, location[1]]]
b = sorted(a, key=lambda x : x[0])
if b not in visit:
answer += 1
visit.append(b)
location = [location[0] - 1, location[1]]
elif dirs[i] == 'L':
if location[1] - 1 >= 0:
a = [[location[0], location[1]], [location[0], location[1] - 1]]
b = sorted(a, key=lambda x : x[1])
if b not in visit:
answer += 1
visit.append(b)
location = [location[0], location[1] - 1]
elif dirs[i] == 'D':
if location[0] + 1 < 11:
a = [[location[0], location[1]], [location[0] + 1, location[1]]]
b = sorted(a, key=lambda x : x[0])
if b not in visit:
answer += 1
visit.append(b)
location = [location[0] + 1, location[1]]
elif dirs[i] == 'R':
if location[1] + 1 < 11:
a = [[location[0], location[1]], [location[0], location[1] + 1]]
b = sorted(a, key=lambda x : x[1])
if b not in visit:
answer += 1
visit.append(b)
location = [location[0], location[1] + 1]
return answer
'알고리즘' 카테고리의 다른 글
프로그래머스) 소수 찾기-python (0) | 2023.01.29 |
---|---|
프로그래머스) 2 x n 타일링-python (0) | 2023.01.29 |
프로그래머스) 할인행사-python (0) | 2023.01.26 |
프로그래머스) 스킬트리-python (0) | 2023.01.24 |
프로그래머스)주차 요금 계산-python (0) | 2023.01.24 |