Skip to content

Commit

Permalink
Create 여행경로.md
Browse files Browse the repository at this point in the history
  • Loading branch information
borricha authored Aug 15, 2022
1 parent 0e285a5 commit d8efd8f
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions programmers/고득점 kit_BFS_DFS/여행경로.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
### 여행경로
---

https://school.programmers.co.kr/learn/courses/30/lessons/43164

재귀로 dfs를 돌면서 풀어야 한다는 접근까지는 가능했는데,
1. 단순 접근만 하면 안되고 지나온 경로를 다 저장하고, 만약 틀렸다면 롤백해야 한다는 점
2. used 역시 각각 함수가 독립적으로 가지고 있어야 하고 롤백되어야 한다는 점 등을 코딩하는데 실수가 계속 났다

배열의 경우 주소값이 함수 인자로 전달되어서 문자열로 인자로 전달해주는 걸로 바꿨다. 또 함수의 return 값을 어떻게 할지 고민하다가
그냥 return 시키지 않고 티켓을 다 사용한 경우에 arr에 append 시켜주었다. (정렬해놓았기에 가장 앞의 인자가 답이다)

```python
def solution(tickets):
arr = []
tickets.sort()

#지금까지 거쳐온 도시와, 사용한 티켓 정보를 받는 재귀함수
def dfs(cities,used):
if 0 not in used:
arr.append(cities)

for i, ticket in enumerate(tickets):
if used[i] == 1:
continue
if cities.split()[-1] == ticket[0]:
used_copy = used[:]
used_copy[i] = 1
#print(used_copy, cities+ticket[1]+" ")
dfs(cities+ticket[1]+" ", used_copy)
return

for i, ticket in enumerate(tickets):
if tickets[i][0] != "ICN":
continue
used = [0 for i in range(len(tickets))]
used[i] = 1
cities = " "
cities += (tickets[i][0] +" "+ tickets[i][1] + " ")
dfs(cities, used)

answer = []
arr = arr[0]
answer = arr.split(" ")
del answer[0]
del answer[-1]
return (answer)
```

다른 사람들 풀이를 좀 더 공부해보아야겠다.

0 comments on commit d8efd8f

Please sign in to comment.