728x90
(단순 처리 방법) - 인데스 초과 확률 多
for i, ticket in enumerate(tickets):
# 마지막 방문 공항(answer[-1])과 이번 티켓의 출발 공항(ticket[0])이 같으면
# print(i, ticket)
start, desc = ticket[0], ticket[1]
if start == answer[-1]:
# 이렇게 해당 ticket 배열이 필요가 없다고 판단 되고
# 만약 또 값은 값을 순회하게 되면 문제를 해결하는데
# 방해가 되기 때문에 삭제를 할 경우
# 위 방법으로 직접적으로 삭제를 하고 순회하는 식으로 문제를 풀면 인덱스 에러가 나기 쉽다.
# 만약 해당 인데스의 재방문를 피하고 싶다면 재귀를 이용해보자
del tickets[i]
# 기타하 내가 할 작업 ..등
(재귀 이용 방법)
def dfs(tickets, answer):
global candidates
for i, ticket in enumerate(tickets):
start, desc = ticket[0], ticket[1]
if start == answer[-1]:
# 재귀를 이용하여 굳이 ticket의 한 인덱스의 값을 직접적으로 삭제하지 않고
# 이런식으로 재귀를 이용하여 처리하면 인덱스 초과 오류에서 해방될 수 있다.
dfs(tickets[:i] + tickets[i + 1:], answer + [desc])
인덱스 초과 오류는 복잡한 문제일수록
알기가 쉽지 않다
정 안되면 이런 식으로 해보는 것도 나쁘지 않을지도?
무엇보다 원래의 메모리값을 직접적으로 관여해서 문제를 풀면
대부분 좋지 않다.
이러한 방법은 직접 관여를 피해서 문제를 푸는 여러 방법 중 하나이다.
728x90
'파이썬과 함께 알면 유용한 자료구조 이용 방법 일지' 카테고리의 다른 글
파이썬 - 문자열 처리 관련 끄적 끄적 (1) - 리스트, 문자열 제거 (0) | 2022.05.10 |
---|---|
딕셔너리 이용 팁 - 1. 문자열형태의 키를 만드는 유용한 방법 (0) | 2022.03.31 |