728x90
https://programmers.co.kr/learn/courses/30/lessons/43164?language=python3
옛날에 손도 못 댔던 문제들을 풀고있다...
약간 감격스러움.. 이 문제도 몇달전에는 풀다가 포기했던 문제다..
정렬함수를 이용해서 도착지를 오름차순으로 정렬해줬다.
모든 경우를 dfs와 백트래킹으로 돌며 가능한 경로를 answer에 담았다.
첫번째 answer에 담길 값만 찾으면 된다.
정렬을 통해 이미 오름차순 조건은 충족시킨 상태이다!
찾을경우 True를 반환해서 더 이상 탐색은 그만두게 설정했다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
answer = []
visit = []
li = []
def dfs(arr, tickets, cnt):
global visit, li, answer
if cnt == len(tickets):
li.append(arr[1])
answer = li[:]
li.pop()
return True
for i in range(len(tickets)):
if arr[1] == tickets[i][0]:
if visit[i] == 1:
continue
visit[i] = 1
# print(li,arr)
li.append(arr[1])
flag = dfs(tickets[i], tickets, cnt + 1)
if flag:
return True
visit[i] = 0
li.pop()
return False
def solution(tickets):
global visit, li
# 도착지 빠른순으로 정렬
tickets = sorted(tickets, key=lambda x: (x[1]))
for i in range(len(tickets)):
if tickets[i][0] == "ICN":
visit = [0] * len(tickets)
li = ["ICN"]
visit[i] = 1
flag = dfs(tickets[i], tickets, 1)
if flag:
return answer
|
cs |
728x90
'PS > 프로그래머스' 카테고리의 다른 글
[프로그래머스 LV 3 ] 등굣길 (파이썬/python) (0) | 2021.06.21 |
---|---|
[프로그래머스 LV 3] 정수 삼각형 (파이썬/python) (0) | 2021.06.21 |
[프로그래머스 LV 3] 단어 변환 (파이썬/python) (0) | 2021.06.19 |
[프로그래머스 LV 3] 베스트앨범 (파이썬/python) (0) | 2021.06.19 |
[프로그래머스 LV 3] 스티커 모으기 (파이썬/python) (0) | 2021.06.17 |